diff --git a/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot b/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot index 53676409ae4caf26bacf0d321e7d952e815c54f1..58905d430057969c6b62180911d3879e81049e89 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot @@ -6,69 +6,201 @@ Resource environment/IndividualPmJob.txt Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} *** Test Cases *** -GET Individual PM Job +GET individual VNF Performance Job + [Documentation] Test ID: 6.3.3.2.1 + ... 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: section 6.4.3.3.2 - SOL002 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET individual VNF Performance Job + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is PmJob + Check HTTP Response Body Pm Job Identifier + +GET individual VNF Performance Job with invalid resource identifier + [Documentation] Test ID: 6.3.3.2.2 + ... 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: section 6.4.3.3.2 - SOL002 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET individual VNF Performance Job with invalid resource identifier + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails + +DELETE Individual VNF Performance Job + [Documentation] Test ID: 6.3.3.2.3 + ... 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: section 6.4.3.3.5 - SOL002 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: The VNF Performance Job is no more available in the VNFM + Send Delete request for individual VNF Performance Job + Check HTTP Response Status Code Is 204 + Check Postcondition VNF Pm Job is Deleted + +DELETE Individual VNF Performance Job with invalid resource identifier + [Documentation] Test ID: 6.3.3.2.4 + ... 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: section 6.4.3.3.5 - SOL002 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... 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: 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 + ... Reference: section 6.4.3.3.1 - SOL002 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: The VNF Performance Job is not created on the VNFM + 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. + ... Reference: section 6.4.3.3.4 - SOL002 v2.4.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: The VNF Performance Job is not modified by the operation + 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 - Method not implemented + [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 + ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. + ... Reference: section 6.4.3.3.5 - SOL002 v2.4.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 405 + 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 Set Headers {"Accept": "${ACCEPT_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} GET ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} - Integer response status 200 - ${contentType}= Output response headers Content-Type - Should Contain ${contentType} ${CONTENT_TYPE_JSON} - Log Trying to validate response - ${result}= Output response body - Validate Json PmJob.schema.json ${result} - Log Validation OK - -GET Individual PM Job - Negative (Not Found) + ${output}= Output response + Set Suite Variable @{response} ${output} + +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} - Integer response status 404 - Log Received 404 Not Found as expected - ${contentType}= Output response headers Content-Type - Should Contain ${contentType} ${CONTENT_TYPE_JSON} - Log Trying to validate ProblemDetails - ${problemDetails}= Output response body - Validate Json ProblemDetails.schema.json ${problemDetails} - Log Validation OK - -DELETE Individual PM Job + ${output}= Output response + Set Suite Variable @{response} ${output} + +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} - Integer response status 204 - Log Received 204 No Content as expected - -DELETE Individual PM Job - Negative (Not Found) - Log Trying to delete an existing PM Job + ${output}= Output response + Set Suite Variable @{response} ${output} + +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}"} DELETE ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${erroneousPmJobId} - Integer response status 404 - Log Received 204 No Content as expected + ${output}= Output response + Set Suite Variable @{response} ${output} -POST Individual PM Job - (Method not implemented) +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/${pmJobId} - Integer response status 405 - Log Received 405 Method not implemented as expected - -PUT Individual PM Job - (Method not implemented) - Log Trying to perform a PUT. This method should not be implemented + POST ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${newPmJobId} + ${output}= Output response + Set Suite Variable @{response} ${output} + +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} + ${origOutput}= Output response + Set Suite Variable @{origResponse} ${origOutput} PUT ${apiRoot}/${apiName}/${apiVersion}/pm_jobs/${pmJobId} - Integer response status 405 - Log Received 405 Method not implemented as expected - -PATCH Individual PM Job - (Method not implemented) - Log Trying to perform a PATCH. This method should not be implemented + ${output}= Output response + 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} - Integer response status 405 - Log Received 405 Method not implemented as expected + ${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}/${apiVersion}/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 + Log Check Response matches original VNF Pm Job + ${pmJob}= evaluate json.loads('''${response[0]['body']}''') json + Should Be Equal ${origResponse[0]['body']['id']} ${pmJob.id} + Should Be Equal ${origResponse[0]['body']['criteria']} ${pmJob.criteria} + Should Be Equal ${origResponse[0]['body']['_links']} ${pmJob._links} + +Check Postcondition VNF Pm Job is Deleted + Log Check Postcondition + GET individual VNF Performance Job + Check HTTP Response Status Code Is 404 + +Check HTTP Response Body Pm Job Identifier + Log Going to validate Pm Job info retrieved + Should Be Equal ${response[0]['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[0]['status']} ${status} + Log Status code validated + +Check HTTP Response Header Contains + [Arguments] ${CONTENT_TYPE} + Should Contain ${response[0]['headers']} ${CONTENT_TYPE} + Log Header is present + +Check HTTP Response Body Json Schema Is + [Arguments] ${input} + Should Contain ${response[0]['headers']['Content-Type']} application/json + ${schema} = Catenate ${input} .schema.json + Validate Json ${schema} ${response[0]['body']} + Log Json Schema Validation OK + diff --git a/SOL002/VNFPerformanceManagement-API/environment/IndividualPmJob.txt b/SOL002/VNFPerformanceManagement-API/environment/IndividualPmJob.txt index a7823e6bdc74dcb53733685df04b18221ca94825..d1a5866bcb5663805b10660dd9be3faf58a17f24 100644 --- a/SOL002/VNFPerformanceManagement-API/environment/IndividualPmJob.txt +++ b/SOL002/VNFPerformanceManagement-API/environment/IndividualPmJob.txt @@ -1,3 +1,6 @@ *** Variables *** ${pmJobId} 29f4ff6a-be91-4ec8-856e-fcf1e2479e4e ${erroneousPmJobId} erroneousPmJobId +${newPmJobId} newPmJobId +@{response}= httpresponse +@{OrigResponse}= httpresponse diff --git a/SOL005/NSLifecycleManagement-API/CancelOperationTask.robot b/SOL005/NSLifecycleManagement-API/CancelOperationTask.robot new file mode 100644 index 0000000000000000000000000000000000000000..6f8fdec85bcf14b43dc7c2518aeeb321cd574f10 --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/CancelOperationTask.robot @@ -0,0 +1,47 @@ +*** Settings *** +Resource environment/variables.txt +Resource NSLCMOperationKeywords.robot +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} +Library OperatingSystem +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +Post Cancel operation task + Depends on test Check resource FAILED_TEMP + Do POST Cancel operation task + Check HTTP Response Status Code Is 202 + +Post Cancel operation task Not Found + [Setup] Check Cancel not supported + Do POST Cancel operation task + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails.schema.json + +Post Cancel operation task Conflict + Depends on test failure Check resource FAILED_TEMP + Do POST Cancel operation task + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails.schema.json + +PUT Cancel operation task - Method not implemented + Do PUT Cancel operation task + Check HTTP Response Status Code Is 405 + +PATCH Cancel operation task - Method not implemented + Do PATCH Cancel operation task + Check HTTP Response Status Code Is 405 + +DELETE Cancel operation task - Method not implemented + Do DELETE Cancel operation task + Check HTTP Response Status Code Is 405 + +GET Cancel operation task - Method not implemented + Do GET Cancel operation task + Check HTTP Response Status Code Is 405 + + + + + \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/ContinueOperationTask.robot b/SOL005/NSLifecycleManagement-API/ContinueOperationTask.robot new file mode 100644 index 0000000000000000000000000000000000000000..bc4c081f8f59a224a4e339b374a0d57fe05bb85d --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/ContinueOperationTask.robot @@ -0,0 +1,45 @@ +*** Settings *** +Resource environment/variables.txt +Resource NSLCMOperationKeywords.robot +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} +Library OperatingSystem +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +Post Continue operation task + Depends on test Check resource FAILED_TEMP + Do POST Continue operation task + Check HTTP Response Status Code Is 202 + +Post Continue operation task Not Found + [Setup] Check Continue not supported + Do POST Continue operation task + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails.schema.json + +Post Continue operation task Conflict + Depends on test failure Check resource FAILED_TEMP + Do POST Continue operation task + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails.schema.json + +PUT Continue operation task - Method not implemented + Do PUT Continue operation task + Check HTTP Response Status Code Is 405 + +PATCH Continue operation task - Method not implemented + Do PATCH Continue operation task + Check HTTP Response Status Code Is 405 + +DELETE Continue operation task - Method not implemented + Do DELETE Continue operation task + Check HTTP Response Status Code Is 405 + +GET Continue operation task - Method not implemented + Do GET Continue operation task + Check HTTP Response Status Code Is 405 + + + \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/FailOperationTask.robot b/SOL005/NSLifecycleManagement-API/FailOperationTask.robot new file mode 100644 index 0000000000000000000000000000000000000000..bd8f6f4837060e15b9cf6d5eb080a8a6a6d9f55b --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/FailOperationTask.robot @@ -0,0 +1,46 @@ +*** Settings *** +Resource environment/variables.txt +Resource NSLCMOperationKeywords.robot +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} +Library OperatingSystem +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +Post Fail operation task + Depends on test Check resource FAILED_TEMP + Do POST Fail operation task + Check HTTP Response Status Code Is 202 + +Post Fail operation task Not Found + [Setup] Check Fail not supported + Do POST Fail operation task + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails.schema.json + +Post Fail operation task Conflict + Depends on test failure Check resource FAILED_TEMP + Do POST Fail operation task + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails.schema.json + +PUT Fail operation task - Method not implemented + Do PUT Fail operation task + Check HTTP Response Status Code Is 405 + +PATCH Fail operation task - Method not implemented + Do PATCH Fail operation task + Check HTTP Response Status Code Is 405 + +DELETE Fail operation task - Method not implemented + Do DELETE Fail operation task + Check HTTP Response Status Code Is 405 + +GET Fail operation task - Method not implemented + Do GET Fail operation task + Check HTTP Response Status Code Is 405 + + + + \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/HealNSTask.robot b/SOL005/NSLifecycleManagement-API/HealNSTask.robot new file mode 100644 index 0000000000000000000000000000000000000000..7f42a93eebfd8ee30c2b4f9e02b032dc818742da --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/HealNSTask.robot @@ -0,0 +1,39 @@ +*** Settings *** +Resource environment/variables.txt +Resource NSLCMOperationKeywords.robot +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} +Library OperatingSystem +Library JSONLibrary +Library JSONSchemaLibrary schemas/ +Suite Setup Check resource existance + +*** Test Cases *** +Heal a NSInstance + Do POST Heal NSInstance + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + +Heal a NSInstance Conflict + [Setup] Check resource not_instantiated + Do POST Heal NSInstance + Check HTTP Response Status Code Is 409 + Check HTTP Response Header Contains ${CONTENT_TYPE} + Check HTTP Response Body Json Schema Is ProblemDetails.schema.json + +GET Heal NSInstance- Method not implemented + Do GET Heal NSInstance + Check HTTP Response Status Code Is 405 + +PUT Heal NSInstance - Method not implemented + Do PUT Heal NSInstance + Check HTTP Response Status Code Is 405 + +PATCH Heal NSInstance - Method not implemented + Do PATCH Heal NSInstance + Check HTTP Response Status Code Is 405 + +DELETE Heal NSInstance - Method not implemented + Do DELETE Heal NSInstance + Check HTTP Response Status Code Is 405 + + \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot b/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot new file mode 100644 index 0000000000000000000000000000000000000000..ec2130a1d00851671537ed1be68d3342bd84e18a --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/IndividualNSInstance.robot @@ -0,0 +1,38 @@ +*** Settings *** +Resource environment/variables.txt +Resource NSLCMOperationKeywords.robot +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} +Library OperatingSystem +Library JSONLibrary +Library JSONSchemaLibrary schemas/ +Suite Setup Check resource existance + +*** Test Cases *** +Post Individual VNFInstance - Method not implemented + Do POST IndividualNSInstance + Check HTTP Response Status Code Is 405 + +Get Information about an individual NS Instance + Do POST individualNSInstance + Check HTTP Response Status Code Is 200 + Check HTTP Response Header ContentType is ${CONTENT_TYPE} + Check HTTP Response Body Json Schema Is nsInstance.schema.json + +PUT Individual NSInstance - Method not implemented + Do PUT IndividualNSInstance + Check HTTP Response Status Code Is 405 + +PATCH Individual NSInstance - Method not implemented + Do PATCH IndividualNSInstance + Check HTTP Response Status Code Is 405 + +DELETE Individual NSInstance + Do DELETE IndividualNSInstance + Check HTTP Response Status Code Is 204 + +DELETE Individual NSInstance Conflict + [Setup] Check resource instantiated + Do DELETE IndividualNSInstance + Check HTTP Response Status Code Is 409 + Check HTTP Response Header ContentType is ${CONTENT_TYPE} + Check HTTP Response Body Json Schema Is ProblemDetails.schema.json diff --git a/SOL005/NSLifecycleManagement-API/IndividualNSLCMOccurences.robot b/SOL005/NSLifecycleManagement-API/IndividualNSLCMOccurences.robot new file mode 100644 index 0000000000000000000000000000000000000000..394dde9475d28f196994eca8797ada01cae06dde --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/IndividualNSLCMOccurences.robot @@ -0,0 +1,33 @@ +*** Settings *** +Resource environment/variables.txt +Resource NSLCMOperationKeywords.robot +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} +Library OperatingSystem +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +Post Individual NS LCM occurences - Method not implemented + Do POST Individual NS LCM OP Occurence + Check HTTP Response Status Code Is 405 + +PUT stauts information about Individual NS LCM OP OCC - Method not implemented + Do PUT Individual NS LCM OP Occurence + Check HTTP Response Status Code Is 405 + +PATCH stauts information about Individual NS LCM OP OCC - Method not implemented + Do PATCH Individual NS LCM OP Occurence + Check HTTP Response Status Code Is 405 + +DELETE stauts information about Individual NS LCM OP OCC - Method not implemented + Do DELETE Individual NS LCM OP Occurence + Check HTTP Response Status Code Is 405 + +Get stauts information about Individual NS LCM OP OCC + Do GET Individual NS LCN OP Occurence + Check HTTP Response Status Code Is 200 + Check HTTP Response Header ContentType is ${CONTENT_TYPE} + Check HTTP Response Body Json Schema Is NsLcmOpOcc.schema.json + + + \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/IndividualSubscription.robot b/SOL005/NSLifecycleManagement-API/IndividualSubscription.robot new file mode 100644 index 0000000000000000000000000000000000000000..41c478534a2df5f3065e1d3046a4300bc152a61f --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/IndividualSubscription.robot @@ -0,0 +1,31 @@ +*** Settings *** +Resource environment/variables.txt +Resource NSLCMOperationKeywords.robot +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} +Library OperatingSystem +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +Suite Setup Check subscription existance + +*** Test Cases *** +Post Individual Subscription - Method not implemented + Do POST Individual Subscription + Check HTTP Response Status Code Is 405 + +Get Information about an individual subscription + Do GET Individual subscription + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is subscription.schema.json + +PUT an individual subscription - Method not implemented + Do PUT Individual Subscription + Check HTTP Response Status Code Is 405 + +PATCH an individual subscription - Method not implemented + Do PATCH Individual Subscription + Check HTTP Response Status Code Is 405 + +DELETE an individual subscription + Do DELETE Individual Subscription + Check HTTP Response Status Code Is 204 \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/InstantiateNSTask.robot b/SOL005/NSLifecycleManagement-API/InstantiateNSTask.robot new file mode 100644 index 0000000000000000000000000000000000000000..d525434ebb3890f0ccfbb41f60e07c3629512d3a --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/InstantiateNSTask.robot @@ -0,0 +1,37 @@ +*** Settings *** +Resource environment/variables.txt +Resource NSLCMOperationKeywords.robot +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} +Library OperatingSystem +Library JSONLibrary +Library JSONSchemaLibrary schemas/ +Suite Setup Check resource existance + +*** Test Cases *** +Instantiate a nsInstance + Do POST Instatiate nsInstance + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + +Instantiate a nsInstance Conflict + [Setup] Check resource instantiated + Do POST Instatiate nsInstance + Check HTTP Response Status Code Is 409 + Check HTTP Response Header Contains ${CONTENT_TYPE} + Check HTTP Response Body Json Schema Is ProblemDetails.schema.json + +GET Instantiate NSInstance - Method not implemented + Do GET Instantiate NSInstance + Check HTTP Response Status Code Is 405 + +PUT Instantiate NSInstance - Method not implemented + Do PUT Instantiate NSInstance + Check HTTP Response Status Code Is 405 + +PATCH Instantiate NSInstance - Method not implemented + Do PATCH Instantiate NSInstance + Check HTTP Response Status Code Is 405 + +DELETE Instantiate NSInstance - Method not implemented + Do DELETE Instantiate NSInstance + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/NSInstances.robot b/SOL005/NSLifecycleManagement-API/NSInstances.robot index 9044e3227184475178458c01abadec401b2bb8d8..8479cb3bca7e5b53123f37f24c3b278c0b01f3de 100644 --- a/SOL005/NSLifecycleManagement-API/NSInstances.robot +++ b/SOL005/NSLifecycleManagement-API/NSInstances.robot @@ -8,7 +8,7 @@ Library JSONSchemaLibrary schemas/ *** Test Cases *** Create a new NsInstance - Do POST New vnfInstance + Do POST New nsInstance Check HTTP Response Status Code Is 201 Check HTTP Response Header Contains Location Check HTTP Response Header ContentType is ${CONTENT_TYPE} @@ -18,6 +18,28 @@ Get information about multiple NS instances Do GET NsInstances Check HTTP Response Status Code Is 200 Check HTTP Response Header ContentType is ${CONTENT_TYPE} - Check HTTP Response Body Json Schema Is vnfInstances.schema.json - Log Validation OK + Check HTTP Response Body Json Schema Is NsInstances.schema.json + +Get information about multiple NS instances Bad Request Invalid attribute-based filtering parameters + Do GET NsInstance Invalid Attribute-Based filtering parameter + Check HTTP Response Status Code Is 400 + Check HTTP Response Header ContentType is ${CONTENT_TYPE} + Check HTTP Response Body Json Schema Is ProblemDetails.schema.json + +Get information about multiple NS instances Bad Request Invalid attribute selector + Do GET NsInstance Invalid Attribute Selector + Check HTTP Response Status Code Is 400 + Check HTTP Response Header ContentType is ${CONTENT_TYPE} + Check HTTP Response Body Json Schema Is ProblemDetails.schema.json + +PUT NSInstances - Method not implemented + Do PUT NSInstances + Check HTTP Response Status Code Is 405 + +PATCH NSInstances - Method not implemented + Do PATCH NSInstances + Check HTTP Response Status Code Is 405 +DELETE NSInstances - Method not implemented + Do DELETE NSInstances + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOccurences.robot b/SOL005/NSLifecycleManagement-API/NSLCMOccurences.robot new file mode 100644 index 0000000000000000000000000000000000000000..c50b22a8f05dd152a2a75988b04bee964361542e --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/NSLCMOccurences.robot @@ -0,0 +1,41 @@ +*** Settings *** +Resource environment/variables.txt +Resource NSLCMOperationKeywords.robot +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} +Library OperatingSystem +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +Post NS LCM occurences - Method not implemented + Do POST NS LCM OP Occurences + Check HTTP Response Status Code Is 405 + +PUT stauts information about multiple NS LCM OP OCC - Method not implemented + Do PUT NS LCM OP Occurences + Check HTTP Response Status Code Is 405 + +PATCH stauts information about multiple NS LCM OP OCC - Method not implemented + Do PATCH NS LCM OP Occurences + Check HTTP Response Status Code Is 405 + +DELETE stauts information about multiple NS LCM OP OCC - Method not implemented + Do DELETE NS LCM OP Occurences + Check HTTP Response Status Code Is 405 + +Get stauts information about multiple NS LCM OP OCC + Do GET NS LCN OP Occurences + Check HTTP Response Status Code Is 200 + Check HTTP Response Header ContentType is ${CONTENT_TYPE} + Check HTTP Response Body Json Schema Is NsLcmOpOccs.schema.json + +Get stauts information about multiple NS LCM OP OCC Bad Request Invalid attribute-based filtering parameters + Do GET NS LCN OP Occurences Invalid attribute-based filtering parameters + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails.schema.json + +Get stauts information about multiple NS LCM OP OCC Bad Request Invalid attribute selector + Do GET NS LCN OP Occurences Invalid attribute selector + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails.schema.json + \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot index 1fa1c84df3558a9031493e703aba8eb2177b7328..c406dbbccb31f377125bce858cf776b6f98642f9 100644 --- a/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot +++ b/SOL005/NSLifecycleManagement-API/NSLCMOperationKeywords.robot @@ -2,11 +2,84 @@ Resource environment/variables.txt Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} Library JSONLibrary +Library Process Library JSONSchemaLibrary schemas/ Library OperatingSystem - +Library MockServerLibrary *** 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} + +Check subscription existance + 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 Fail not supported + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Get ${apiRoot}/${apiName}/${apiVersion}/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} + # 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} + # 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} + # 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} + # 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} + String response body operationState FAILED_TEMP + +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}/ns_instances/${nsInstanceId} + String response body instantiationState INSTANTIATED + +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}/ns_instances/${nsInstanceId} + String response body instantiationState NOT_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/scaleNsToLevelRequest.json + Post ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/scale_to_level ${body} + Integer response status 202 + +Check resource existance + 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} + Integer response status 200 + Check HTTP Response Status Code Is [Arguments] ${expected_status} Log Validate Status code @@ -23,14 +96,13 @@ Check HTTP Response Body Json Schema Is Validate Json ${schema} ${response[0]['body']} Log Json Schema Validation OK -Check HTTP Response Header ContentType is +Check HTTP Response Header ContentType is [Arguments] ${expected_contentType} Log Validate content type Should Be Equal ${response[0]['headers']['Content-Type']} ${expected_contentType} Log Content Type validated - -Do POST New vnfInstance +Do POST New nsInstance Log Create NS instance by POST to ${apiRoot}/${apiName}/${apiVersion}/ns_instances Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} @@ -40,7 +112,6 @@ Do POST New vnfInstance ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} - Do GET NsInstances Log Query NS The GET method queries information about multiple NS instances. Set Headers {"Accept":"${ACCEPT}"} @@ -50,4 +121,714 @@ Do GET NsInstances ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} - \ No newline at end of file + +Do 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}"} + Get ${apiRoot}/${apiName}/${apiVersion}/ns_instances?attribute_not_exist=some_value + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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}"} + Get ${apiRoot}/${apiName}/${apiVersion}/vnf_instances?fields=wrong_field + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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}"} + Put ${apiRoot}/${apiName}/${apiVersion}/ns_instances + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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}"} + Patch ${apiRoot}/${apiName}/${apiVersion}/ns_instances + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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}"} + Delete ${apiRoot}/${apiName}/${apiVersion}/ns_instances + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +DO 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}"} + Post ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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}"} + Get ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId} + ${Etag}= Output response headers Etag + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +DO 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}"} + Put ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +DO 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}"} + Patch ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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 + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + + Do PATCH 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}"} + Patch ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/instantiate + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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}"} + Put ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/instantiate + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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}"} + Get ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/instantiate + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + + Do POST Instatiate 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}"} + ${body}= Get File jsons/InstantiateNsRequest.json + Post ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/instantiate ${body} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + + +Do 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 + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + + Do PATCH 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}"} + Patch ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/scale + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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}"} + Put ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/scale + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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}"} + Get ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/scale + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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}"} + ${body}= Get File jsons/ScaleNsRequest.json + Post ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/scale ${body} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + + +Do 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 + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + + Do PATCH 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}"} + Patch ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/update + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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}"} + Put ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/update + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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}"} + Get ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/update + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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}"} + ${body}= Get File jsons/UpdateNsRequest.json + Post ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/update ${body} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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 + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + + Do PATCH 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}"} + Patch ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/heal + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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}"} + Put ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/heal + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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}"} + Get ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/heal + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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}"} + ${body}= Get File jsons/HealNsRequest.json + Post ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/heal ${body} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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 + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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}"} + Patch ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/terminate + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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}"} + Put ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/terminate + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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}"} + Get ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/terminate + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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}"} + ${body}= Get File jsons/TerminateNsRequest.json + Post ${apiRoot}/${apiName}/${apiVersion}/ns_instances/${nsInstanceId}/terminate ${body} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do POST NS LCM OP Occurences + 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 + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do PUT NS LCM OP Occurences + 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 + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do PATCH NS LCM OP Occurences + 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 + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do DELETE NS LCM OP Occurences + 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 + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do GET NS LCN OP Occurences + 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}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do GET NS LCN OP Occurences 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?attribute_not_exist=some_value + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do GET NS LCN OP Occurences Invalid attribute selector + Log Query NS The GET method queries information about multiple NS instances. + Set Headers {"Accept":"${ACCEPT}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + GET ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs?fields=wrong_field + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do POST Individual NS LCM OP Occurence + 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} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do PUT Individual NS LCM OP Occurence + 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} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do PATCH Individual NS LCM OP Occurence + 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} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do DELETE Individual NS LCM OP Occurence + 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} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do GET Individual NS LCN OP Occurence + 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}"} + Log Execute Query and validate response + Get ${apiRoot}/${apiName}/${apiVersion}/ns_lcm_op_occs/${nsLcmOpOccId} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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 + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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 + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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 + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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 + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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 + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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 + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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 + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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 + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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 + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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 + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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 + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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 + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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 + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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 + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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 + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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 + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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 + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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 + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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 + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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 + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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 + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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 + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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 + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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 + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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 + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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} + +Do 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} + +Do 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} + +Do 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/LccnSubscriptionRequest.json + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do 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 + 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 + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + +Do POST subscriptions NO DUPLICATION + Log Trying to create a subscription with an already created content + 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}"} + ${body}= Get File jsons/LccnSubscriptionRequest.json + Post ${apiRoot}/${apiName}/${apiVersion}/subscriptions ${body} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} + + +Do 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} + +Do 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} + + +Do 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} + +Do 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} + +Do 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} + +Do 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} + +Do 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} + ${outputResponse}= Output response + Set Global Variable @{response} ${outputResponse} diff --git a/SOL005/NSLifecycleManagement-API/NotificationEndpoint.robot b/SOL005/NSLifecycleManagement-API/NotificationEndpoint.robot new file mode 100644 index 0000000000000000000000000000000000000000..9f4c79bfe38afc8556f233e6bce8a5789e50987b --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/NotificationEndpoint.robot @@ -0,0 +1,95 @@ +*** Settings *** +Suite Setup Create Sessions +Suite Teardown Terminate All Processes kill=true +Resource environment/variables.txt +Resource NSLCMOperationKeywords.robot +Library MockServerLibrary +Library Process +Library OperatingSystem + + +*** Test Cases *** +Deliver a notification - Operation Occurence + log The POST method delivers a notification from the server to the client. + ${json}= Get File schemas/NsLcmOperationOccurrenceNotification.schema.json + ${BODY}= evaluate json.loads('''${json}''') json + Log Creating mock request and response to handle NSLcmOperationOccurrenceNotification + &{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} + +Deliver a notification - Id Creation + log The POST method delivers a notification from the server to the client. + ${json}= Get File schemas/NsIdentifierCreationNotification.schema.json + ${BODY}= evaluate json.loads('''${json}''') json + Log Creating mock request and response to handle NsIdentifierCreationNotification + &{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} + +Deliver a notification - Id deletion + log The POST method delivers a notification from the server to the client. + ${json}= Get File schemas/NsIdentifierDeletionNotification.schema.json + ${BODY}= evaluate json.loads('''${json}''') json + Log Creating mock request and response to handle NsIdentifierDeletionNotification + &{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} + + +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} diff --git a/SOL005/NSLifecycleManagement-API/RetryOperationTask.robot b/SOL005/NSLifecycleManagement-API/RetryOperationTask.robot new file mode 100644 index 0000000000000000000000000000000000000000..ea21b4e81ede1a01a83eff807898521caf715526 --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/RetryOperationTask.robot @@ -0,0 +1,46 @@ +*** Settings *** +Resource environment/variables.txt +Resource NSLCMOperationKeywords.robot +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} +Library OperatingSystem +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +Post Retry operation task + Depends on test Check resource FAILED_TEMP + Do POST Retry operation task + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + +Post Retry operation task Not Found + [Setup] Check retry not supported + Do POST Retry operation task + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails.schema.json + +Post Retry operation task Conflict + Depends on test failure Check resource FAILED_TEMP + Do POST Retry operation task + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails.schema.json + +PUT Retry operation task - Method not implemented + Do PUT Retry operation task + Check HTTP Response Status Code Is 405 + +PATCH Retry operation task - Method not implemented + Do PATCH Retry operation task + Check HTTP Response Status Code Is 405 + +DELETE Retry operation task - Method not implemented + Do DELETE Retry operation task + Check HTTP Response Status Code Is 405 + +GET Retry operation task - Method not implemented + Do GET Retry operation task + Check HTTP Response Status Code Is 405 + + + \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/RollbackOperationTask.robot b/SOL005/NSLifecycleManagement-API/RollbackOperationTask.robot new file mode 100644 index 0000000000000000000000000000000000000000..838da60604a46503eaa3965ddde1e0c8151b8bae --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/RollbackOperationTask.robot @@ -0,0 +1,46 @@ +*** Settings *** +Resource environment/variables.txt +Resource NSLCMOperationKeywords.robot +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} +Library OperatingSystem +Library DependencyLibrary +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +Post Rollback operation task + Depends on test Check resource FAILED_TEMP + Do POST Rollback operation task + Check HTTP Response Status Code Is 202 + + +Post Rollback operation task Not Found + [Setup] Check Rollback not supported + Do POST Rollback operation task + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails.schema.json + +Post Rollback operation task Conflict + Depends on test failure Check resource FAILED_TEMP + Do POST Rollback operation task + Check HTTP Response Status Code Is 409 + Check HTTP Response Body Json Schema Is ProblemDetails.schema.json + +PUT Rollback operation task - Method not implemented + Do PUT Rollback operation task + Check HTTP Response Status Code Is 405 + +PATCH Rollback operation task - Method not implemented + Do PATCH Rollback operation task + Check HTTP Response Status Code Is 405 + +DELETE Rollback operation task - Method not implemented + Do DELETE Rollback operation task + Check HTTP Response Status Code Is 405 + +GET Rollback operation task - Method not implemented + Do GET Rollback operation task + Check HTTP Response Status Code Is 405 + + + \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/ScaleNSTask.robot b/SOL005/NSLifecycleManagement-API/ScaleNSTask.robot new file mode 100644 index 0000000000000000000000000000000000000000..405bc1f9977acaf1c7679739f44b819c80f5f8e2 --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/ScaleNSTask.robot @@ -0,0 +1,39 @@ +*** Settings *** +Resource environment/variables.txt +Resource NSLCMOperationKeywords.robot +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} +Library OperatingSystem +Library JSONLibrary +Library JSONSchemaLibrary schemas/ +Suite Setup Check resource existance + +*** Test Cases *** +Scale a nsInstance + Do POST scale nsInstance + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + +Instantiate a nsInstance Conflict + [Setup] Check resource not_instantiated + Do POST scale nsInstance + Check HTTP Response Status Code Is 409 + Check HTTP Response Header Contains ${CONTENT_TYPE} + Check HTTP Response Body Json Schema Is ProblemDetails.schema.json + +GET Scale NSInstance- Method not implemented + Do GET scale NSInstance + Check HTTP Response Status Code Is 405 + +PUT Scale NSInstance - Method not implemented + Do PUT scale NSInstance + Check HTTP Response Status Code Is 405 + +PATCH Scale NSInstance - Method not implemented + Do PATCH scale NSInstance + Check HTTP Response Status Code Is 405 + +DELETE Scale NSInstance - Method not implemented + Do DELETE scale NSInstance + Check HTTP Response Status Code Is 405 + + \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/Subscriptions.robot b/SOL005/NSLifecycleManagement-API/Subscriptions.robot new file mode 100644 index 0000000000000000000000000000000000000000..508cb390531f008305e2678e0b5ea811d65efb12 --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/Subscriptions.robot @@ -0,0 +1,51 @@ +*** Settings *** +Resource environment/variables.txt +Resource NSLCMOperationKeywords.robot +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} +Library OperatingSystem +Library JSONLibrary +Library JSONSchemaLibrary schemas/ + +*** Test Cases *** +Create a new subscription + Do POST subscriptions + Check HTTP Response Status Code Is 201 + Check HTTP Response Header Contains Location + Check HTTP Response Header ContentType is ${CONTENT_TYPE} + Check HTTP Response Body Json Schema Is subscription.schema.json + + +Create a new Subscription - DUPLICATION + Do POST subscriptions DUPLICATION + Check HTTP Response Status Code Is 201 + Check HTTP Response Header Contains Location + Check HTTP Response Header ContentType is ${CONTENT_TYPE} + Check HTTP Response Body Json Schema Is subscription.schema.json + +Create a new Subscription - NO-DUPLICATION + Do POST subscriptions NO DUPLICATION + Check HTTP Response Status Code Is 201 + Check HTTP Response Header Contains Location + Check HTTP Response Header ContentType is ${CONTENT_TYPE} + +GET Subscriptions + Do GET Subscriptions + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is subscriptions.schema.json + +GET Subscription - Filter + Do GET Subscriptions with filter + Check HTTP Response Status Code Is 200 + Check HTTP Response Body Json Schema Is subscriptions.schema.json + +PUT subscriptions - Method not implemented + Do PUT subscriptions + Check HTTP Response Status Code Is 405 + +PATCH subscriptions - Method not implemented + Do PATCH subscriptions + Check HTTP Response Status Code Is 405 + +DELETE subscriptions - Method not implemented + Do DELETE subscriptions + Check HTTP Response Status Code Is 405 \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/TerminateNSTask.robot b/SOL005/NSLifecycleManagement-API/TerminateNSTask.robot new file mode 100644 index 0000000000000000000000000000000000000000..8a9bf7f619c812b89be6e545c50f4b022286ac05 --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/TerminateNSTask.robot @@ -0,0 +1,39 @@ +*** Settings *** +Resource environment/variables.txt +Resource NSLCMOperationKeywords.robot +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} +Library OperatingSystem +Library JSONLibrary +Library JSONSchemaLibrary schemas/ +Suite Setup Check resource existance + +*** Test Cases *** +Terminate a NSInstance + Do POST Terminate NSInstance + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + +Terminate a NSInstance Conflict + [Setup] Check resource not_instantiated + Do POST Terminate NSInstance + Check HTTP Response Status Code Is 409 + Check HTTP Response Header Contains ${CONTENT_TYPE} + Check HTTP Response Body Json Schema Is ProblemDetails.schema.json + +GET Terminate NSInstance- Method not implemented + Do GET Terminate NSInstance + Check HTTP Response Status Code Is 405 + +PUT Terminate NSInstance - Method not implemented + Do PUT Terminate NSInstance + Check HTTP Response Status Code Is 405 + +PATCH Terminate NSInstance - Method not implemented + Do PATCH Terminate NSInstance + Check HTTP Response Status Code Is 405 + +DELETE Terminate NSInstance - Method not implemented + Do DELETE Terminate NSInstance + 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 new file mode 100644 index 0000000000000000000000000000000000000000..afe4f7b6ebce08296f7d949b6e1eceb08c4c720f --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/UpdateNSTask.robot @@ -0,0 +1,39 @@ +*** Settings *** +Resource environment/variables.txt +Resource NSLCMOperationKeywords.robot +Library REST ${NFVO_SCHEMA}://${NFVO_HOST}:${NFVO_PORT} +Library OperatingSystem +Library JSONLibrary +Library JSONSchemaLibrary schemas/ +Suite Setup Check resource existance + +*** Test Cases *** +Update a NSInstance + Do POST Update NSInstance + Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + +Update a NSInstance Conflict + [Setup] Check resource not_instantiated + Do POST Update NSInstance + Check HTTP Response Status Code Is 409 + Check HTTP Response Header Contains ${CONTENT_TYPE} + Check HTTP Response Body Json Schema Is ProblemDetails.schema.json + +GET Update NSInstance- Method not implemented + Do GET Update NSInstance + Check HTTP Response Status Code Is 405 + +PUT Update NSInstance - Method not implemented + Do PUT Update NSInstance + Check HTTP Response Status Code Is 405 + +PATCH Update NSInstance - Method not implemented + Do PATCH Update NSInstance + Check HTTP Response Status Code Is 405 + +DELETE Update NSInstance - Method not implemented + Do DELETE Update NSInstance + Check HTTP Response Status Code Is 405 + + \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/environment/variables.txt b/SOL005/NSLifecycleManagement-API/environment/variables.txt index 5d37e4f2ceea551f9236aa2debeaa88835ca8611..fe17ec718e69e8efe8e8b8475547ace8be64df62 100644 --- a/SOL005/NSLifecycleManagement-API/environment/variables.txt +++ b/SOL005/NSLifecycleManagement-API/environment/variables.txt @@ -15,20 +15,20 @@ ${apiName} nslcm ${apiVersion} v1 ${AUTH_USAGE} 1 ${WRONG_AUTHORIZATION} Bearer XXXXXWRONGXXXXX -${vnfInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f -${vnfInstanceName} Test-VnfInstance -${vnfInstanceDescription} description vnf -${vnfInstanceDescription_Update} Updated description vnf +${nsInstanceId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f +${nsInstanceName} Test-nsInstance +${nsInstanceDescription} description ns +${nsInstanceDescription_Update} Updated description ns ${SINGLE_FILE_VNFD} 1 # If VNFD is PLAIN TEXT ${ACCEPT_PLAIN} text/plain ${ACCEPT_ZIP} application/zip -${vnfPkgId_processing} 007c111c-38a1-42c0-a666-7475ecb1567c +${nsPkgId_processing} 007c111c-38a1-42c0-a666-7475ecb1567c ${ARTIFACT_TYPE} application/octet-stream ${ARTIFACT_ID} artifactId ${WRONG_ACCEPT} application/json -${vnfLcmOpOccId} 6fc3539c-e602-4afa-8e13-962fb5a7d81d +${nsLcmOpOccId} 6fc3539c-e602-4afa-8e13-962fb5a7d81d ${CancelMode} GRACEFUL -${VNFM_DUPLICATION} 0 +${NFVO_DUPLICATION} 0 ${sub_filter} filter ${sub_filter_invalid} filter_invalid ${subscriptionId} 6fc3539c-e602-4afa-8e13-962fb5a7d81f @@ -43,3 +43,6 @@ ${callback_endpoint_error} /endpoint_404 ${sleep_interval} 20s ${response} {} + +${Etag}= an etag +${Etag_modified}= a modified etag diff --git a/SOL005/NSLifecycleManagement-API/jsons/HealNsRequest.json b/SOL005/NSLifecycleManagement-API/jsons/HealNsRequest.json new file mode 100644 index 0000000000000000000000000000000000000000..fccf6153f09938107483b5f9f7e626a0cbe4a22b --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/jsons/HealNsRequest.json @@ -0,0 +1,3 @@ +{ + "degreeHealing": "HEAL_RESTORE" +} \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/jsons/InstantiateNsRequest.json b/SOL005/NSLifecycleManagement-API/jsons/InstantiateNsRequest.json new file mode 100644 index 0000000000000000000000000000000000000000..9ff470c15666b8d745b8bdfc330f0a403c41c4aa --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/jsons/InstantiateNsRequest.json @@ -0,0 +1,73 @@ +{ + "type": "object", + "required": [ + "nsFlavourId" + ], + "properties": { + "nsFlavourId": { + "description": "Identifier of the NS deployment flavor to be instantiated.\n", + "$ref": "SOL005_def.yaml#/definitions/IdentifierInNsd" + }, + "sapData": { + "description": "Create data concerning the SAPs of this NS.\n", + "type": "array", + "items": { + "$ref": "#/definitions/SapData" + } + }, + "addpnfData": { + "description": "Information on the PNF(s) that are part of this NS.\n", + "type": "array", + "items": { + "$ref": "#/definitions/AddPnfData" + } + }, + "vnfInstanceData": { + "description": "Specify an existing VNF instance to be used in the NS. If needed, the VNF Profile to be used for this VNF instance is also provided.\n", + "type": "array", + "items": { + "$ref": "#/definitions/VnfInstanceData" + } + }, + "nestedNsInstanceId": { + "description": "Specify an existing NS instance to be used as a nested NS within the NS.\n", + "type": "array", + "items": { + "$ref": "SOL005_def.yaml#/definitions/Identifier" + } + }, + "localizationLanguage": { + "description": "Defines the location constraints for the VNF to be instantiated as part of the NS instantiation. An example can be a constraint for the VNF to be in a specific geographic location..\n", + "type": "array", + "items": { + "$ref": "#/definitions/VnfLocationConstraint" + } + }, + "additionalParamsForNs": { + "description": "Allows the OSS/BSS to provide additional parameter(s) at the NS level (as opposed to the VNF level, which is covered in additionalParamsForVnf)..\n", + "$ref": "SOL005_def.yaml#/definitions/KeyValuePairs" + }, + "additionalParamsForVnf": { + "description": "Allows the OSS/BSS to provide additional parameter(s) per VNF instance (as opposed to the NS level, which is covered in additionalParamsForNs). This is for VNFs that are to be created by the NFVO as part of the NS instantiation and not for existing VNF that are referenced for reuse..\n", + "type": "array", + "items": { + "$ref": "#/definitions/ParamsForVnf" + } + }, + "startTime": { + "description": "Timestamp indicating the earliest time to instantiate the NS. Cardinality \"0\" indicates the NS instantiation takes place immediately.\n", + "$ref": "SOL005_def.yaml#/definitions/DateTime" + }, + "nsInstantiationLevelId": { + "description": "Identifies one of the NS instantiation levels declared in the DF applicable to this NS instance. If not present, the default NS instantiation level as declared in the NSD shall be used.\n", + "$ref": "SOL005_def.yaml#/definitions/IdentifierInNsd" + }, + "additionalAffinityOrAntiAffiniityRule": { + "description": "Specifies additional affinity or anti-affinity constraint for the VNF instances to be instantiated as part of the NS instantiation. Shall not conflict with rules already specified in the NSD.\n", + "type": "array", + "items": { + "$ref": "#/definitions/AffinityOrAntiAffinityRule" + } + } + } +} \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/jsons/LccnSubscriptionRequest.json b/SOL005/NSLifecycleManagement-API/jsons/LccnSubscriptionRequest.json new file mode 100644 index 0000000000000000000000000000000000000000..82e84e1f1552b6b5f9ef8c5d93536dd5415d7e00 --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/jsons/LccnSubscriptionRequest.json @@ -0,0 +1,10 @@ +{ + "filter": { + "nsInstanceSubscriptionFilter": { + "nsdIds": [ + "6fc3539c-e602-4afa-8e13-962fb5a7d81f" + ] + } + }, + "callbackUri": "http://127.0.0.1/subscribe" +} \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/jsons/ScaleNsRequest.json b/SOL005/NSLifecycleManagement-API/jsons/ScaleNsRequest.json new file mode 100644 index 0000000000000000000000000000000000000000..a4813a952db46263d77b52de3b2d28d24d693f1d --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/jsons/ScaleNsRequest.json @@ -0,0 +1,32 @@ +{ + "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" + } + } +} \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/jsons/TerminateNsRequest.json b/SOL005/NSLifecycleManagement-API/jsons/TerminateNsRequest.json new file mode 100644 index 0000000000000000000000000000000000000000..55821dd86c543cf6dc71ae58f1c3bacf9c2d983b --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/jsons/TerminateNsRequest.json @@ -0,0 +1,3 @@ +{ + "terminationTime": "2021-04-12T23:20:50.52Z" +} \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/jsons/UpdateNsRequest.json b/SOL005/NSLifecycleManagement-API/jsons/UpdateNsRequest.json new file mode 100644 index 0000000000000000000000000000000000000000..705612bfff2cd52cea8471b947180bf45cf03ce6 --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/jsons/UpdateNsRequest.json @@ -0,0 +1,172 @@ +{ + "description": "This operation supports the update of a NS instance, It shall comply with the provisions defined in Table 6.5.2.12-1.\n", + "type": "object", + "required": [ + "updateType" + ], + "properties": { + "updateType": { + "description": "The type of update. It determines also which one of the following parameters is present in the operation. Possible values include: * ADD_VNF: Adding existing VNF instance(s) * REMOVE_VNF: Removing VNF instance(s) * INSTANTIATE_VNF: Instantiating new VNF(s) * CHANGE_VNF_DF: Changing VNF DF * OPERATE_VNF: Changing VNF state, * MODIFY_VNF_INFORMATION: Modifying VNF information and/or the configurable properties of VNF instance(s) * CHANGE_EXTERNAL_VNF_CONNECTIVITY: Changing the external connectivity of VNF instance(s)ADD_SAP: Adding SAP(s) * REMOVE_SAP: Removing SAP(s) * ADD_NESTED_NS: Adding existing NS instance(s) as nested NS(s) * REMOVE_NESTED_NS: Removing existing nested NS instance(s) * ASSOC_NEW_NSD_VERSION: Associating a new NSD version to the NS instance * MOVE_VNF: Moving VNF instance(s) from one origin NS instance to another target NS instance * ADD_VNFFG: Adding VNFFG(s) * REMOVE_VNFFG: Removing VNFFG(s) * UPDATE_VNFFG: Updating VNFFG(s) * CHANGE_NS_DF: Changing NS DF * ADD_PNF: Adding PNF * MODIFY_PNF: Modifying PNF * REMOVE_PNF: Removing PNF\n", + "type": "string", + "enum": [ + "ADD_VNF", + "REMOVE_VNF", + "INSTANTIATE_VNF", + "CHANGE_VNF_DF", + "OPERATE_VNF", + "MODIFY_VNF_INFORMATION", + "CHANGE_EXTERNAL_VNF_CONNECTIVITY", + "REMOVE_SAP", + "ADD_NESTED_NS", + "REMOVE_NESTED_NS", + "ASSOC_NEW_NSD_VERSION", + "MOVE_VNF", + "ADD_VNFFG", + "REMOVE_VNFFG", + "UPDATE_VNFFG", + "CHANGE_NS_DF", + "ADD_PNF", + "MODIFY_PNF", + "REMOVE_PNF" + ] + }, + "addVnfIstance": { + "description": "Identifies an existing VNF instance to be added to the NS instance. It shall be present only if updateType = \"ADD_VNF\".\n", + "type": "array", + "items": { + "$ref": "#/definitions/VnfInstanceData" + } + }, + "removeVnfInstanceId": { + "description": "Identifies an existing VNF instance to be removed from the NS instance. It contains the identifier(s) of the VNF instances to be removed. It shall be present only if updateType = \"REMOVE_VNF.\" Note: If a VNF instance is removed from a NS and this NS was the last one for which this VNF instance was a part, the VNF instance is terminated by the NFVO.\n", + "type": "array", + "items": { + "$ref": "SOL005_def.yaml#/definitions/Identifier" + } + }, + "instantiateVnfData": { + "description": "Identifies the new VNF to be instantiated. It can be used e.g. for the bottom-up NS creation. It shall be present only if updateType = \"INSTANTIATE_VNF\".\n", + "type": "array", + "items": { + "$ref": "#/definitions/InstantiateVnfData" + } + }, + "changeVnfFlavourData": { + "description": "Identifies the new DF of the VNF instance to be changed to. It shall be present only if updateType = \"CHANGE_VNF_DF\".\n", + "type": "array", + "items": { + "$ref": "#/definitions/ChangeVnfFlavourData" + } + }, + "operateVnfData": { + "description": "Identifies the state of the VNF instance to be changed. It shall be present only if updateType = \"OPERATE_VNF\".\n", + "type": "array", + "items": { + "$ref": "#/definitions/OperateVnfData" + } + }, + "modifyVnfInfoData": { + "description": "Identifies the VNF information parameters and/or the configurable properties of VNF instance to be modified. It shall be present only if updateType = \"MODIFY_VNF_INFORMATION\".\n", + "type": "array", + "items": { + "$ref": "#/definitions/ModifyVnfInfoData" + } + }, + "changeExtVnfConnectivityData": { + "description": "Specifies the new external connectivity data of the VNF instance to be changed. It shall be present only if updateType = \"CHANGE_EXTERNAL_VNF_CONNECTIVITY\".\n", + "type": "array", + "items": { + "$ref": "#/definitions/ChangeExtVnfConnectivityData" + } + }, + "addSap": { + "description": "Identifies a new SAP to be added to the NS instance. It shall be present only if updateType = \"ADD_SAP.\"\n", + "type": "array", + "items": { + "$ref": "#/definitions/SapData" + } + }, + "removeSapId": { + "description": "The identifier an existing SAP to be removed from the NS instance. It shall be present only if updateType = \"REMOVE_SAP.\"\n", + "type": "array", + "items": { + "$ref": "SOL005_def.yaml#/definitions/Identifier" + } + }, + "addNestedNsId": { + "description": "The identifier of an existing nested NS instance to be added to (nested within) the NS instance. It shall be present only if updateType = \"ADD_NESTED_NS\".\n", + "type": "array", + "items": { + "$ref": "SOL005_def.yaml#/definitions/Identifier" + } + }, + "removeNestedNsId": { + "description": "The identifier of an existing nested NS instance to be removed from the NS instance. It shall be present only if updateType = \"REMOVE_NESTED_NS\".\n", + "type": "array", + "items": { + "$ref": "SOL005_def.yaml#/definitions/IdentifierInNs" + } + }, + "assocNewNsdVersionData": { + "description": "Specify the new NSD to be used for the NS instance. It shall be present only if updateType = ASSOC_NEW_NSD_VERSION\".\n", + "$ref": "#/definitions/AssocNewNsdVersionData" + }, + "moveVnfInstanceData": { + "description": "Specify existing VNF instance to be moved from one NS instance to another NS instance. It shall be present only if updateType = MOVE_VNF\".\n", + "type": "array", + "items": { + "$ref": "#/definitions/MoveVnfInstanceData" + } + }, + "addVnffg": { + "description": "Specify the new VNFFG to be created to the NS Instance. It shall be present only if updateType = \"ADD_VNFFG\".\n", + "type": "array", + "items": { + "$ref": "#/definitions/AddVnffgData" + } + }, + "removeVnffgId": { + "description": "Identifier of an existing VNFFG to be removed from the NS Instance. It shall be present only if updateType = \"REMOVE_VNFFG\".\n", + "type": "array", + "items": { + "$ref": "SOL005_def.yaml#/definitions/Identifier" + } + }, + "updateVnffg": { + "description": "Specify the new VNFFG Information data to be updated for a VNFFG of the NS Instance. It shall be present only if updateType = \"UPDATE_VNFFG\".\n", + "type": "array", + "items": { + "$ref": "#/definitions/UpdateVnffgData" + } + }, + "changeNsFlavourData": { + "description": "Specifies the new DF to be applied to the NS instance. It shall be present only if updateType = \"CHANGE_NS_DF\".\n", + "$ref": "#/definitions/ChangeNsFlavourData" + }, + "addPnfData": { + "description": "specifies the PNF to be added into the NS instance. It shall be present only if updateType = \"ADD_PNF\".\n", + "type": "array", + "items": { + "$ref": "#/definitions/AddPnfData" + } + }, + "modifyPnfData": { + "description": "Specifies the PNF to be modified in the NS instance. It shall be present only if updateType = \"MODIFY_PNF\".\n", + "type": "array", + "items": { + "$ref": "#/definitions/ModifyPnfData" + } + }, + "removePnfId": { + "description": "Identifier of the PNF to be deleted from the NS instance. It shall be present only if updateType = \"REMOVE_PNF\".\n", + "type": "array", + "items": { + "$ref": "SOL005_def.yaml#/definitions/Identifier" + } + }, + "updateTime": { + "description": "Timestamp indicating the update time of the NS, i.e. the NS will be updated at this timestamp. Cardinality \"0\" indicates the NS update takes place immediately.\n", + "$ref": "SOL005_def.yaml#/definitions/DateTime" + } + } +} \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/jsons/scaleNsToLevelRequest.json b/SOL005/NSLifecycleManagement-API/jsons/scaleNsToLevelRequest.json new file mode 100644 index 0000000000000000000000000000000000000000..240f405c50b54638343bea23dae303e354171f2f --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/jsons/scaleNsToLevelRequest.json @@ -0,0 +1,3 @@ +{ + "instantiationLevelId": "myNextLevel" +} \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/schemas/NsIdentifierCreationNotification.schema.json b/SOL005/NSLifecycleManagement-API/schemas/NsIdentifierCreationNotification.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..c3a17a7a2debeb8184dfbb9831a6d7a7258296c0 --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/schemas/NsIdentifierCreationNotification.schema.json @@ -0,0 +1,29 @@ +{ + "type": "object", + "required": [ + "subscriptionId", + "nsInstanceId" + ], + "properties": { + "notificationType": { + "description": "Discriminator for the different notification types. Shall be set to \"NsIdentifierDeletionNotification\" for this notification type.\n", + "type": "string" + }, + "subscriptionId": { + "description": "Identifier of the subscription that this notification relates to.\n", + "$ref": "SOL005_def.yaml#/definitions/Identifier" + }, + "timestamp": { + "description": "Date-time of the generation of the notification.\n", + "$ref": "SOL005_def.yaml#/definitions/DateTime" + }, + "nsInstanceId": { + "description": "The created NS instance identifier\n", + "$ref": "SOL005_def.yaml#/definitions/Identifier" + }, + "_links": { + "description": "Links to resources related to this notification.\n", + "$ref": "#/definitions/LccnLinks" + } + } + } \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/schemas/NsIdentifierDeletionNotification.schema.json b/SOL005/NSLifecycleManagement-API/schemas/NsIdentifierDeletionNotification.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..c3a17a7a2debeb8184dfbb9831a6d7a7258296c0 --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/schemas/NsIdentifierDeletionNotification.schema.json @@ -0,0 +1,29 @@ +{ + "type": "object", + "required": [ + "subscriptionId", + "nsInstanceId" + ], + "properties": { + "notificationType": { + "description": "Discriminator for the different notification types. Shall be set to \"NsIdentifierDeletionNotification\" for this notification type.\n", + "type": "string" + }, + "subscriptionId": { + "description": "Identifier of the subscription that this notification relates to.\n", + "$ref": "SOL005_def.yaml#/definitions/Identifier" + }, + "timestamp": { + "description": "Date-time of the generation of the notification.\n", + "$ref": "SOL005_def.yaml#/definitions/DateTime" + }, + "nsInstanceId": { + "description": "The created NS instance identifier\n", + "$ref": "SOL005_def.yaml#/definitions/Identifier" + }, + "_links": { + "description": "Links to resources related to this notification.\n", + "$ref": "#/definitions/LccnLinks" + } + } + } \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/schemas/NsInstance.schema.json b/SOL005/NSLifecycleManagement-API/schemas/NsInstance.schema.json index 68aa863252771b353611ced5d982007531af95f3..56b7566f6a8da6cc5a4159c494cf4d60eae9fb53 100644 --- a/SOL005/NSLifecycleManagement-API/schemas/NsInstance.schema.json +++ b/SOL005/NSLifecycleManagement-API/schemas/NsInstance.schema.json @@ -1,144 +1,144 @@ { - "NsInstance": { - "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": "Identifier of the NS instance.\n", - "$ref": "SOL005_def.yaml#/definitions/Identifier" - }, - "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": "Identifier of the NSD on which the NS instance is based.\n", - "$ref": "SOL005_def.yaml#/definitions/Identifier" - }, - "nsdInfoId": { - "description": "Identifier of the NSD information object on which the NS instance is based. This identifier was allocated by the NFVO.\n", + + "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": "Identifier of the NS instance.\n", + "$ref": "SOL005_def.yaml#/definitions/Identifier" + }, + "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": "Identifier of the NSD on which the NS instance is based.\n", + "$ref": "SOL005_def.yaml#/definitions/Identifier" + }, + "nsdInfoId": { + "description": "Identifier of the NSD information object on which the NS instance is based. This identifier was allocated by the NFVO.\n", + "$ref": "SOL005_def.yaml#/definitions/Identifier" + }, + "flavourId": { + "description": "Identifier of the NS deployment flavor applied to the NS instance. This attribute shall be present if the nsState attribute value is INSTANTIATED.\n", + "$ref": "SOL005_def.yaml#/definitions/IdentifierInNsd" + }, + "vnfInstance": { + "description": "Information on constituent VNF(s) of the NS instance.\n", + "type": "array", + "items": { + "$ref": "#/definitions/VnfInstance" + } + }, + "pnfInfo": { + "description": "Information on the PNF(s) that are part of the NS instance.\n", + "type": "array", + "items": { + "$ref": "#/definitions/PnfInfo" + } + }, + "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": { + "$ref": "#/definitions/NsVirtualLinkInfo" + } + }, + "vnffgInfo": { + "description": "Information on the VNFFG(s) of the NS instance.\n", + "type": "array", + "items": { + "$ref": "#/definitions/VnffgInfo" + } + }, + "sapInfo": { + "description": "Information on the SAP(s) of the NS instance.\n", + "type": "array", + "items": { + "$ref": "#/definitions/SapInfo" + } + }, + "nestedNsInstanceId": { + "description": "Identifier of the nested NS(s) of the NS instance.\n", + "type": "array", + "items": { "$ref": "SOL005_def.yaml#/definitions/Identifier" - }, - "flavourId": { - "description": "Identifier of the NS deployment flavor applied to the NS instance. This attribute shall be present if the nsState attribute value is INSTANTIATED.\n", - "$ref": "SOL005_def.yaml#/definitions/IdentifierInNsd" - }, - "vnfInstance": { - "description": "Information on constituent VNF(s) of the NS instance.\n", - "type": "array", - "items": { - "$ref": "#/definitions/VnfInstance" - } - }, - "pnfInfo": { - "description": "Information on the PNF(s) that are part of the NS instance.\n", - "type": "array", - "items": { - "$ref": "#/definitions/PnfInfo" - } - }, - "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": { - "$ref": "#/definitions/NsVirtualLinkInfo" - } - }, - "vnffgInfo": { - "description": "Information on the VNFFG(s) of the NS instance.\n", - "type": "array", - "items": { - "$ref": "#/definitions/VnffgInfo" - } - }, - "sapInfo": { - "description": "Information on the SAP(s) of the NS instance.\n", - "type": "array", - "items": { - "$ref": "#/definitions/SapInfo" - } - }, - "nestedNsInstanceId": { - "description": "Identifier of the nested NS(s) of the NS instance.\n", - "type": "array", - "items": { - "$ref": "SOL005_def.yaml#/definitions/Identifier" - } - }, - "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" - ] - }, - "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": { - "$ref": "#/definitions/NsScaleInfo" - } - }, - "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": { - "$ref": "#/definitions/AffinityOrAntiAffinityRule" - } - }, - "_links": { - "type": "object", - "description": "Links to resources related to this resource.", - "required": [ - "self" - ], - "properties": { - "self": { - "description": "URI of this resource.\n", - "$ref": "SOL005_def.yaml#/definitions/Link" - }, - "nestedNsInstances": { - "description": "Links to resources related to this notification.\n", - "type": "array", - "items": { - "$ref": "SOL005_def.yaml#/definitions/Link" - } - }, - "instantiate": { - "description": "Link to the \"instantiate\" task resource, if the related operation is possible based on the current status of this NS instance resource (i.e. NS instance in NOT_INSTANTIATED state).\n", - "$ref": "SOL005_def.yaml#/definitions/Link" - }, - "terminate": { - "description": "Link to the \"terminate\" task resource, if the related operation is possible based on the current status of this NS instance resource (i.e. NS instance is in INSTANTIATED state).\n", - "$ref": "SOL005_def.yaml#/definitions/Link" - }, - "update": { - "description": "Link to the \"update\" task resource, if the related operation is possible based on the current status of this NS instance resource (i.e. NS instance is in INSTANTIATED state).\n", - "$ref": "SOL005_def.yaml#/definitions/Link" - }, - "scale": { - "description": "Link to the \"scale\" task resource, if the related operation is supported for this NS instance, and is possible based on the current status of this NS instance resource (i.e. NS instance is in INSTANTIATED state).\n", - "$ref": "SOL005_def.yaml#/definitions/Link" - }, - "heal": { - "description": "Link to the \"heal\" task resource, if the related operation is supported for this NS instance, and is possible based on the current status of this NS instance resource (i.e. NS instance is in INSTANTIATED state).\n", + } + }, + "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" + ] + }, + "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": { + "$ref": "#/definitions/NsScaleInfo" + } + }, + "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": { + "$ref": "#/definitions/AffinityOrAntiAffinityRule" + } + }, + "_links": { + "type": "object", + "description": "Links to resources related to this resource.", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "URI of this resource.\n", + "$ref": "SOL005_def.yaml#/definitions/Link" + }, + "nestedNsInstances": { + "description": "Links to resources related to this notification.\n", + "type": "array", + "items": { "$ref": "SOL005_def.yaml#/definitions/Link" } + }, + "instantiate": { + "description": "Link to the \"instantiate\" task resource, if the related operation is possible based on the current status of this NS instance resource (i.e. NS instance in NOT_INSTANTIATED state).\n", + "$ref": "SOL005_def.yaml#/definitions/Link" + }, + "terminate": { + "description": "Link to the \"terminate\" task resource, if the related operation is possible based on the current status of this NS instance resource (i.e. NS instance is in INSTANTIATED state).\n", + "$ref": "SOL005_def.yaml#/definitions/Link" + }, + "update": { + "description": "Link to the \"update\" task resource, if the related operation is possible based on the current status of this NS instance resource (i.e. NS instance is in INSTANTIATED state).\n", + "$ref": "SOL005_def.yaml#/definitions/Link" + }, + "scale": { + "description": "Link to the \"scale\" task resource, if the related operation is supported for this NS instance, and is possible based on the current status of this NS instance resource (i.e. NS instance is in INSTANTIATED state).\n", + "$ref": "SOL005_def.yaml#/definitions/Link" + }, + "heal": { + "description": "Link to the \"heal\" task resource, if the related operation is supported for this NS instance, and is possible based on the current status of this NS instance resource (i.e. NS instance is in INSTANTIATED state).\n", + "$ref": "SOL005_def.yaml#/definitions/Link" } } } } + } \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/schemas/NsInstances.schema.json b/SOL005/NSLifecycleManagement-API/schemas/NsInstances.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..51832b7c36582f6572343e3e23011206758124e3 --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/schemas/NsInstances.schema.json @@ -0,0 +1,145 @@ +{ + "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": "Identifier of the NS instance.\n", + "$ref": "SOL005_def.yaml#/definitions/Identifier" + }, + "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": "Identifier of the NSD on which the NS instance is based.\n", + "$ref": "SOL005_def.yaml#/definitions/Identifier" + }, + "nsdInfoId": { + "description": "Identifier of the NSD information object on which the NS instance is based. This identifier was allocated by the NFVO.\n", + "$ref": "SOL005_def.yaml#/definitions/Identifier" + }, + "flavourId": { + "description": "Identifier of the NS deployment flavor applied to the NS instance. This attribute shall be present if the nsState attribute value is INSTANTIATED.\n", + "$ref": "SOL005_def.yaml#/definitions/IdentifierInNsd" + }, + "vnfInstance": { + "description": "Information on constituent VNF(s) of the NS instance.\n", + "type": "array", + "items": { + "$ref": "#/definitions/VnfInstance" + } + }, + "pnfInfo": { + "description": "Information on the PNF(s) that are part of the NS instance.\n", + "type": "array", + "items": { + "$ref": "#/definitions/PnfInfo" + } + }, + "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": { + "$ref": "#/definitions/NsVirtualLinkInfo" + } + }, + "vnffgInfo": { + "description": "Information on the VNFFG(s) of the NS instance.\n", + "type": "array", + "items": { + "$ref": "#/definitions/VnffgInfo" + } + }, + "sapInfo": { + "description": "Information on the SAP(s) of the NS instance.\n", + "type": "array", + "items": { + "$ref": "#/definitions/SapInfo" + } + }, + "nestedNsInstanceId": { + "description": "Identifier of the nested NS(s) of the NS instance.\n", + "type": "array", + "items": { + "$ref": "SOL005_def.yaml#/definitions/Identifier" + } + }, + "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" + ] + }, + "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": { + "$ref": "#/definitions/NsScaleInfo" + } + }, + "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": { + "$ref": "#/definitions/AffinityOrAntiAffinityRule" + } + }, + "_links": { + "type": "object", + "description": "Links to resources related to this resource.", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "URI of this resource.\n", + "$ref": "SOL005_def.yaml#/definitions/Link" + }, + "nestedNsInstances": { + "description": "Links to resources related to this notification.\n", + "type": "array", + "items": { + "$ref": "SOL005_def.yaml#/definitions/Link" + } + }, + "instantiate": { + "description": "Link to the \"instantiate\" task resource, if the related operation is possible based on the current status of this NS instance resource (i.e. NS instance in NOT_INSTANTIATED state).\n", + "$ref": "SOL005_def.yaml#/definitions/Link" + }, + "terminate": { + "description": "Link to the \"terminate\" task resource, if the related operation is possible based on the current status of this NS instance resource (i.e. NS instance is in INSTANTIATED state).\n", + "$ref": "SOL005_def.yaml#/definitions/Link" + }, + "update": { + "description": "Link to the \"update\" task resource, if the related operation is possible based on the current status of this NS instance resource (i.e. NS instance is in INSTANTIATED state).\n", + "$ref": "SOL005_def.yaml#/definitions/Link" + }, + "scale": { + "description": "Link to the \"scale\" task resource, if the related operation is supported for this NS instance, and is possible based on the current status of this NS instance resource (i.e. NS instance is in INSTANTIATED state).\n", + "$ref": "SOL005_def.yaml#/definitions/Link" + }, + "heal": { + "description": "Link to the \"heal\" task resource, if the related operation is supported for this NS instance, and is possible based on the current status of this NS instance resource (i.e. NS instance is in INSTANTIATED state).\n", + "$ref": "SOL005_def.yaml#/definitions/Link" + } + } + } + } + } +} \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/schemas/NsLcmOpOcc.schema.json b/SOL005/NSLifecycleManagement-API/schemas/NsLcmOpOcc.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..195db319ef65cd32983ef3a27560a340a361c4a1 --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/schemas/NsLcmOpOcc.schema.json @@ -0,0 +1,157 @@ +{ + "description": "This type represents a request a NS lifecycle operation occurrence. It shall comply with the provisions defined in Table 6.5.2.3-1.\n", + "type": "object", + "required": [ + "id", + "operationState", + "stateEnteredTime", + "nsInstanceId", + "lcmOperationType", + "startTime", + "isAutomaticInvocation", + "operationParams", + "isCancelPending", + "_links" + ], + "properties": { + "id": { + "description": "Identifier of this NS lifecycle operation occurrence.\n", + "$ref": "SOL005_def.yaml#/definitions/Identifier" + }, + "operationState": { + "description": "The state of the NS LCM operation.\n", + "$ref": "SOL005NSLifecycleManagement_def.yaml#/definitions/NsLcmOperationStateType" + }, + "stateEnteredTime": { + "description": "Date-time when the current state was entered.\n", + "type": "string", + "format": "date-time" + }, + "nsInstanceId": { + "description": "Identifier of the NS instance to which the operation applies.\n", + "$ref": "SOL005_def.yaml#/definitions/Identifier" + }, + "lcmOperationType": { + "description": "Type of the actual LCM operation represented by this lcm operation occurrence.\n", + "$ref": "SOL005NSLifecycleManagement_def.yaml#/definitions/NsLcmOpType" + }, + "startTime": { + "description": "Date-time of the start of the operation.\n", + "type": "string", + "format": "date-time" + }, + "isAutomaticInvocation": { + "description": "Set to true if this NS LCM operation occurrence has been automatically triggered by the NFVO. This occurs in the case of auto-scaling, auto-healing and when a nested NS is modified as a result of an operation on its composite NS. Set to false otherwise.\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 lcmOperationType and the data type of this attribute shall apply: - INSTANTIATE: InstantiateNsRequest - SCALE: ScaleNsRequest - UPDATE: UpdateNsRequest - HEAL: HealNsRequest - TERMINATE: TerminateNsRequest\n", + "type": "string", + "enum": [ + "INSTANTIATE", + "SCALE", + "UPDATE", + "HEAL", + "TERMINATE" + ] + }, + "isCancelPending": { + "description": "If the LCM operation occurrence is in \"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": "The mode of an ongoing cancellation. Shall be present when isCancelPending=true, and shall be absent otherwise.\n", + "$ref": "#/definitions/CancelModeType" + }, + "error": { + "description": "If \"operationState\" is \"FAILED_TEMP\" or \"FAILED\" or \"operationState\" is \"PROCESSING\" or \"ROLLING_BACK\" and previous value of \"operationState\" was \"FAILED_TEMP\", this attribute shall be present and contain error information, unless it has been requested to be excluded via an attribute selector.\n", + "$ref": "#/definitions/ProblemDetails" + }, + "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": { + "affectedVnfs": { + "description": "Information about the VNF instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation.\n", + "type": "array", + "items": { + "$ref": "SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedVnf" + } + }, + "affectedPnfs": { + "description": "Information about the PNF instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation.\n", + "type": "array", + "items": { + "$ref": "SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedPnf" + } + }, + "affectedVls": { + "description": "Information about the VL instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation.\n", + "type": "array", + "items": { + "$ref": "SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedVl" + } + }, + "affectedVnffgs": { + "description": "Information about the VNFFG instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note\n", + "type": "array", + "items": { + "$ref": "SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedVnffg" + } + }, + "affectedNss": { + "description": "Information about the nested NS instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note.\n", + "type": "array", + "items": { + "$ref": "SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedNs" + } + }, + "affectedSaps": { + "description": "Information about the nested NS instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note.\n", + "type": "array", + "items": { + "$ref": "SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedSap" + } + } + } + }, + "_links": { + "description": "Links to resources related to this resource.\n", + "type": "object", + "required": [ + "self", + "nsInstance" + ], + "properties": { + "self": { + "description": "URI of this resource.\n", + "$ref": "SOL005_def.yaml#/definitions/Link" + }, + "nsInstance": { + "description": "Link to the NS instance that the operation applies to.\n", + "$ref": "SOL005_def.yaml#/definitions/Link" + }, + "cancel": { + "description": "Link to the task resource that represents the \"cancel\" operation for this LCM operation occurrence, if cancelling is currently allowed.\n", + "$ref": "SOL005_def.yaml#/definitions/Link" + }, + "retry": { + "description": "Link to the task resource that represents the \"cancel\" operation for this LCM operation occurrence, if cancelling is currently allowed.\n", + "$ref": "SOL005_def.yaml#/definitions/Link" + }, + "rollback": { + "description": "Link to the task resource that represents the \"rollback\" operation for this LCM operation occurrence, if rolling back is currently allowed.\n", + "$ref": "SOL005_def.yaml#/definitions/Link" + }, + "continue": { + "description": "Link to the task resource that represents the \"continue\" operation for this LCM operation occurrence, if rolling back is currently allowed.\n", + "$ref": "SOL005_def.yaml#/definitions/Link" + }, + "fail": { + "description": "Link to the task resource that represents the \"fail\" operation for this LCM operation occurrence, if rolling back is currently allowed.\n", + "$ref": "SOL005_def.yaml#/definitions/Link" + } + } + } + } +} \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/schemas/NsLcmOpOccs.schema.json b/SOL005/NSLifecycleManagement-API/schemas/NsLcmOpOccs.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..ad3e5afb6e951107d5d8ad8a69d8a4ba7efa7a2f --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/schemas/NsLcmOpOccs.schema.json @@ -0,0 +1,160 @@ +{ + "type": "array", + "items":{ + "description": "This type represents a request a NS lifecycle operation occurrence. It shall comply with the provisions defined in Table 6.5.2.3-1.\n", + "type": "object", + "required": [ + "id", + "operationState", + "stateEnteredTime", + "nsInstanceId", + "lcmOperationType", + "startTime", + "isAutomaticInvocation", + "operationParams", + "isCancelPending", + "_links" + ], + "properties": { + "id": { + "description": "Identifier of this NS lifecycle operation occurrence.\n", + "$ref": "SOL005_def.yaml#/definitions/Identifier" + }, + "operationState": { + "description": "The state of the NS LCM operation.\n", + "$ref": "SOL005NSLifecycleManagement_def.yaml#/definitions/NsLcmOperationStateType" + }, + "stateEnteredTime": { + "description": "Date-time when the current state was entered.\n", + "type": "string", + "format": "date-time" + }, + "nsInstanceId": { + "description": "Identifier of the NS instance to which the operation applies.\n", + "$ref": "SOL005_def.yaml#/definitions/Identifier" + }, + "lcmOperationType": { + "description": "Type of the actual LCM operation represented by this lcm operation occurrence.\n", + "$ref": "SOL005NSLifecycleManagement_def.yaml#/definitions/NsLcmOpType" + }, + "startTime": { + "description": "Date-time of the start of the operation.\n", + "type": "string", + "format": "date-time" + }, + "isAutomaticInvocation": { + "description": "Set to true if this NS LCM operation occurrence has been automatically triggered by the NFVO. This occurs in the case of auto-scaling, auto-healing and when a nested NS is modified as a result of an operation on its composite NS. Set to false otherwise.\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 lcmOperationType and the data type of this attribute shall apply: - INSTANTIATE: InstantiateNsRequest - SCALE: ScaleNsRequest - UPDATE: UpdateNsRequest - HEAL: HealNsRequest - TERMINATE: TerminateNsRequest\n", + "type": "string", + "enum": [ + "INSTANTIATE", + "SCALE", + "UPDATE", + "HEAL", + "TERMINATE" + ] + }, + "isCancelPending": { + "description": "If the LCM operation occurrence is in \"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": "The mode of an ongoing cancellation. Shall be present when isCancelPending=true, and shall be absent otherwise.\n", + "$ref": "#/definitions/CancelModeType" + }, + "error": { + "description": "If \"operationState\" is \"FAILED_TEMP\" or \"FAILED\" or \"operationState\" is \"PROCESSING\" or \"ROLLING_BACK\" and previous value of \"operationState\" was \"FAILED_TEMP\", this attribute shall be present and contain error information, unless it has been requested to be excluded via an attribute selector.\n", + "$ref": "#/definitions/ProblemDetails" + }, + "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": { + "affectedVnfs": { + "description": "Information about the VNF instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation.\n", + "type": "array", + "items": { + "$ref": "SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedVnf" + } + }, + "affectedPnfs": { + "description": "Information about the PNF instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation.\n", + "type": "array", + "items": { + "$ref": "SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedPnf" + } + }, + "affectedVls": { + "description": "Information about the VL instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation.\n", + "type": "array", + "items": { + "$ref": "SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedVl" + } + }, + "affectedVnffgs": { + "description": "Information about the VNFFG instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note\n", + "type": "array", + "items": { + "$ref": "SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedVnffg" + } + }, + "affectedNss": { + "description": "Information about the nested NS instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note.\n", + "type": "array", + "items": { + "$ref": "SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedNs" + } + }, + "affectedSaps": { + "description": "Information about the nested NS instances that were affected during the lifecycle operation, if this notification represents the result of a lifecycle operation. See note.\n", + "type": "array", + "items": { + "$ref": "SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedSap" + } + } + } + }, + "_links": { + "description": "Links to resources related to this resource.\n", + "type": "object", + "required": [ + "self", + "nsInstance" + ], + "properties": { + "self": { + "description": "URI of this resource.\n", + "$ref": "SOL005_def.yaml#/definitions/Link" + }, + "nsInstance": { + "description": "Link to the NS instance that the operation applies to.\n", + "$ref": "SOL005_def.yaml#/definitions/Link" + }, + "cancel": { + "description": "Link to the task resource that represents the \"cancel\" operation for this LCM operation occurrence, if cancelling is currently allowed.\n", + "$ref": "SOL005_def.yaml#/definitions/Link" + }, + "retry": { + "description": "Link to the task resource that represents the \"cancel\" operation for this LCM operation occurrence, if cancelling is currently allowed.\n", + "$ref": "SOL005_def.yaml#/definitions/Link" + }, + "rollback": { + "description": "Link to the task resource that represents the \"rollback\" operation for this LCM operation occurrence, if rolling back is currently allowed.\n", + "$ref": "SOL005_def.yaml#/definitions/Link" + }, + "continue": { + "description": "Link to the task resource that represents the \"continue\" operation for this LCM operation occurrence, if rolling back is currently allowed.\n", + "$ref": "SOL005_def.yaml#/definitions/Link" + }, + "fail": { + "description": "Link to the task resource that represents the \"fail\" operation for this LCM operation occurrence, if rolling back is currently allowed.\n", + "$ref": "SOL005_def.yaml#/definitions/Link" + } + } + } + } + } +} \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/schemas/NsLcmOperationOccurrenceNotification.schema.json b/SOL005/NSLifecycleManagement-API/schemas/NsLcmOperationOccurrenceNotification.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..dc2155d656fec466d672f0842ca9abf06e74487f --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/schemas/NsLcmOperationOccurrenceNotification.schema.json @@ -0,0 +1,96 @@ +{ + "type": "object", + "required": [ + "id", + "nsInstanceId", + "nsLcmOpOccId", + "subscriptionId" + ], + "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.\n", + "$ref": "SOL005_def.yaml#/definitions/Identifier" + }, + "nsInstanceId": { + "description": "The identifier of the NS instance affected.\n", + "$ref": "SOL005_def.yaml#/definitions/Identifier" + }, + "nsLcmOpOccId": { + "description": "The identifier of the NS lifecycle operation occurrence associated to the notification.\n", + "$ref": "SOL005_def.yaml#/definitions/Identifier" + }, + "operation": { + "description": "The lifecycle operation.\n", + "$ref": "#/definitions/NsLcmOpType" + }, + "notificationType": { + "description": "Discriminator for the different notification types. Shall be set to \"NsLcmOperationOccurrenceNotification\" for this notification type.\n", + "type": "string" + }, + "subscriptionId": { + "description": "Identifier of the subscription that this notification relates to.\n", + "$ref": "SOL005_def.yaml#/definitions/Identifier" + }, + "timestamp": { + "description": "Date-time of the generation of the notification.\n", + "$ref": "SOL005_def.yaml#/definitions/DateTime" + }, + "notificationStatus": { + "description": "Indicates whether this notification reports about the start of a NS lifecycle operation or the result of a NS lifecycle operation. Permitted values: - START: Informs about the start of the NS LCM operation occurrence. - RESULT: Informs about the final or intermediate result of the NS LCM operation occurrence.\n", + "type": "string", + "enum": [ + "START", + "RESULT" + ] + }, + "operationState": { + "description": "The state of the NS lifecycle operation occurrence.\n", + "$ref": "#/definitions/NsLcmOperationStateType" + }, + "isAutomaticInvocation": { + "description": "Set to true if this NS LCM operation occurrence has been automatically triggered by the NFVO. This occurs in case of auto-scaling, auto-healing and when a nested NS is modified as a result of an operation on its composite NS. Set to false otherwise.\n", + "type": "boolean" + }, + "affectedVnf": { + "description": "Information about the VNF instances that were affected during the lifecycle operation.\n", + "$ref": "#/definitions/AffectedVnf" + }, + "affectedPnf": { + "description": "Information about the PNF instances that were affected during the lifecycle operation.\n", + "$ref": "#/definitions/AffectedPnf" + }, + "affectedVl": { + "description": "Information about the VL instances that were affected during the lifecycle operation.\n", + "type": "array", + "items": { + "$ref": "#/definitions/AffectedVirtualLink" + } + }, + "affectedVnffg": { + "description": "Information about the VNFFG instances that were affected during the lifecycle operation.\n", + "type": "array", + "items": { + "$ref": "#/definitions/AffectedVnffg" + } + }, + "affectedNs": { + "description": "Information about the SAP instances that were affected during the lifecycle operation. See note.\n", + "type": "array", + "items": { + "$ref": "#/definitions/AffectedSap" + } + }, + "affectedSap": { + "description": "The lifecycle operation.\n", + "$ref": "#/definitions/NsLcmOpType" + }, + "error": { + "description": "Details of the latest error, if one has occurred during executing the LCM operation (see clause 4.3.5). Shall be present if operationState is \"FAILED_TEMP\" or \"FAILED\", and shall be absent otherwise.\n", + "$ref": "SOL005_def.yaml#/definitions/ProblemDetails" + }, + "_links": { + "description": "Links to resources related to this notification.\n", + "$ref": "#/definitions/LccnLinks" + } + } +} \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/schemas/ProblemDetails.schema.json b/SOL005/NSLifecycleManagement-API/schemas/ProblemDetails.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..cb8cecc4e0695aca03163370e39c5fe6e194253b --- /dev/null +++ b/SOL005/NSLifecycleManagement-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/SOL005/NSLifecycleManagement-API/schemas/subscription.schema.json b/SOL005/NSLifecycleManagement-API/schemas/subscription.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..cb16a220e0a73a97b05a302cbaae079b7d282312 --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/schemas/subscription.schema.json @@ -0,0 +1,36 @@ +{ + "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": "Identifier of this subscription resource.\n", + "$ref": "SOL005_def.yaml#/definitions/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.\n", + "$ref": "#/definitions/LifecycleChangeNotificationsFilter" + }, + "callbackUri": { + "description": "The URI of the endpoint to send the notification to.\n", + "$ref": "SOL005_def.yaml#/definitions/Uri" + }, + "_links": { + "description": "Links to resources related to this resource.\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "URI of this resource.\n", + "$ref": "SOL005_def.yaml#/definitions/Link" + } + } + } + } +} \ No newline at end of file diff --git a/SOL005/NSLifecycleManagement-API/schemas/subscriptions.schema.json b/SOL005/NSLifecycleManagement-API/schemas/subscriptions.schema.json new file mode 100644 index 0000000000000000000000000000000000000000..b532dd5eb1cf2be8d87f09b74bb45e6e8c2f99e6 --- /dev/null +++ b/SOL005/NSLifecycleManagement-API/schemas/subscriptions.schema.json @@ -0,0 +1,39 @@ +{ + "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": "Identifier of this subscription resource.\n", + "$ref": "SOL005_def.yaml#/definitions/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.\n", + "$ref": "#/definitions/LifecycleChangeNotificationsFilter" + }, + "callbackUri": { + "description": "The URI of the endpoint to send the notification to.\n", + "$ref": "SOL005_def.yaml#/definitions/Uri" + }, + "_links": { + "description": "Links to resources related to this resource.\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "URI of this resource.\n", + "$ref": "SOL005_def.yaml#/definitions/Link" + } + } + } + } + } +} \ No newline at end of file