diff --git a/SOL009/NFVMANOLogManagement-API/ApiVersion.robot b/SOL009/NFVMANOLogManagement-API/ApiVersion.robot index 61144e06eea4279f2907e964c26e8bf5acacdb42..180a90ed62c7e5f1b30207df379b53e6c1b58b07 100644 --- a/SOL009/NFVMANOLogManagement-API/ApiVersion.robot +++ b/SOL009/NFVMANOLogManagement-API/ApiVersion.robot @@ -1,9 +1,5 @@ *** Settings *** -Resource environment/variables.txt -Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false -Library DependencyLibrary -Library JSONLibrary -Library JSONSchemaLibrary schemas/ +Resource NFVMANOLogManagementKeywords.robot *** Test Cases *** POST API Version - Method not implemented @@ -127,85 +123,3 @@ DELETE API Version with apiMajorVerion - Method not implemented ... Post-Conditions: none DELETE API Version Check HTTP Response Status Code Is 405 - -*** Keywords *** -POST API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -POST API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Post ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -GET API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PUT API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Put ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -PATCH API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Patch ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -DELETE API Version with apiMajorVersion - Set Headers {"Accept":"${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Delete ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Check HTTP Response Body Json Schema Is - [Arguments] ${input} - ${schema} = Catenate ${input} .schema.json - Validate Json ${schema} ${response['body']} - Log Json Schema Validation OK diff --git a/SOL009/NFVMANOLogManagement-API/CompileLogTask.robot b/SOL009/NFVMANOLogManagement-API/CompileLogTask.robot index 696be039963997b8b4ec7838c81ff30d4abb4251..1740de0f97f4340909f1b043c5f7db6f984eca96 100644 --- a/SOL009/NFVMANOLogManagement-API/CompileLogTask.robot +++ b/SOL009/NFVMANOLogManagement-API/CompileLogTask.robot @@ -1,10 +1,5 @@ *** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt Resource NFVMANOLogManagementKeywords.robot -Library JSONLibrary -Library OperatingSystem -Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false *** Test Cases *** @@ -13,7 +8,7 @@ Request to compile the logged data into a file - Synchronous mode ... Test title: Request to compile the logged data into a file - Synchronous mode ... Test objective: The objective is to request to compile the logged data into a file in synchronous mode and perform a JSON schema validation on the returned log report data structure ... Pre-conditions: logging job is available - ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO can decide immediately what to respond to a compile request ... Post-Conditions: none @@ -27,7 +22,7 @@ Request to compile the logged data into a file - Asynchronous mode ... Test title: Request to compile the logged data into a file - Asynchronous mode ... Test objective: The objective is to request to compile the logged data into a file in asynchronous mode ... Pre-conditions: logging job is available - ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO can not decide immediately what to respond to a compile request ... Post-Conditions: log report is available to the API consumer @@ -41,7 +36,7 @@ Request to compile the logged data into a file - Already Processing ... Test title: Request to compile the logged data into a file - Already Processing ... Test objective: The objective is to request to compile the logged data into a file when a log data compilation and report creation is already ongoing, or a log report has just been created, for the specified logging job at the time of processing the request ... Pre-conditions: none - ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -54,7 +49,7 @@ Request to compile the logged data into a file with unprocessable entity ... Test title: Request to compile the logged data into a file with unprocessable entity ... Test objective: The objective is to test that the rrequest to compile the logged data into a file fails when error in request body. ... Pre-conditions: none - ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.6.3.1 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -67,7 +62,7 @@ GET Compiled Log Data - Method not implemented ... Test title: GET Compiled Log Data - Method not implemented ... Test objective: The objective is to test that GET method is not allowed to retrieve compiled log data. ... Pre-conditions: none - ... Reference: clause 8.5.6.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.6.3.2 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -79,7 +74,7 @@ PUT Compiled Log Data - Method not implemented ... Test title: PUT Compiled Log Data - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update compiled log data. ... Pre-conditions: none - ... Reference: clause 8.5.6.3.3 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.6.3.3 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -91,7 +86,7 @@ PATCH Compiled Log Data - Method not implemented ... Test title: PATCH Compiled Log Data - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update compiled log data. ... Pre-conditions: none - ... Reference: clause 8.5.6.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.6.3.4 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -103,7 +98,7 @@ DELETE Compiled Log Data - Method not implemented ... Test title: DELETE Compiled Log Data - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update compiled log data. ... Pre-conditions: none - ... Reference: clause 8.5.6.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.6.3.5 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOLogManagement-API/IndividualLoggingJob.robot b/SOL009/NFVMANOLogManagement-API/IndividualLoggingJob.robot index a6bc0ecff4176bbfbe8a9d7af650c31fc2bb2930..bab3daa57fa70dfedf82bcd5f1d973d9307b5e84 100644 --- a/SOL009/NFVMANOLogManagement-API/IndividualLoggingJob.robot +++ b/SOL009/NFVMANOLogManagement-API/IndividualLoggingJob.robot @@ -1,10 +1,5 @@ *** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt Resource NFVMANOLogManagementKeywords.robot -Library JSONLibrary -Library OperatingSystem -Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false *** Test Cases *** POST Individual Logging Job - Method not implemented @@ -12,7 +7,7 @@ POST Individual Logging Job - Method not implemented ... Test title: POST Individual Logging Job - method not implemented ... Test objective: The objective is to test that POST method is not allowed to create an Indiviual Logging ... Pre-conditions: none - ... Reference: clause 8.5.4.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.4.3.1 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -24,7 +19,7 @@ GET individual Logging Job ... Test title: Get individual Logging Job ... Test objective: The objective is to test the retrieval of an individual logging job and perform a JSON schema validation of the collected job data structure ... Pre-conditions: Logging Job is already created. - ... Reference: clause 8.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -38,7 +33,7 @@ GET individual Logging Job with invalid resource identifier ... Test title: Get individual Logging Job with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual logging job fails when using an invalid resource identifier, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: Logging Job is already created. - ... Reference: clause 8.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.4.3.2 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -51,7 +46,7 @@ PUT Individual Logging Job - Method not implemented ... Test title: PUT Individual Logging Job - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing Logging Job ... Pre-conditions: none - ... Reference: clause 8.5.4.3.3 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.4.3.3 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -63,7 +58,7 @@ PATCH Individual Logging Job - Method not implemented ... Test title: PATCH Individual Logging Job - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing new Logging Job ... Pre-conditions: none - ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 6.5.4.3.4 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -75,7 +70,7 @@ DELETE Individual Logging Job ... Test title: DELETE Individual Logging Job ... Test objective: The objective is to test the deletion of an individual logging job ... Pre-conditions: Logging Job is already created. - ... Reference: clause 8.5.4.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.4.3.5 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The Logging Job is no more available. @@ -88,7 +83,7 @@ DELETE Individual Logging Job with invalid resource identifier ... Test title: DELETE Individual Logging Job with invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual logging job fails when using an invalid resource identifier ... Pre-conditions: Logging Job is already created. - ... Reference: clause 8.5.4.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.4.3.5 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOLogManagement-API/IndividualReport.robot b/SOL009/NFVMANOLogManagement-API/IndividualReport.robot index e6893d68716f71dbb73cf60411c07612b96df99a..19ba07bc6c3d3fab0b9d59f2c3ea722266769323 100644 --- a/SOL009/NFVMANOLogManagement-API/IndividualReport.robot +++ b/SOL009/NFVMANOLogManagement-API/IndividualReport.robot @@ -1,10 +1,5 @@ *** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt Resource NFVMANOLogManagementKeywords.robot -Library JSONLibrary -Library OperatingSystem -Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false *** Test Cases *** POST Individual Log Report - Method not implemented @@ -12,7 +7,7 @@ POST Individual Log Report - Method not implemented ... Test title: POST Individual Log Report - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new log report. ... Pre-conditions: none - ... Reference: clause 8.5.5.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.5.3.1 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -24,7 +19,7 @@ Get Individual Log Report ... Test title: Get Individual Log Report ... Test objective: The objective is to test the retrieval of an individual log report and perform a JSON schema validation of the collected report data structure ... Pre-conditions: One or more log reports are set. - ... Reference: clause 8.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -37,7 +32,7 @@ Get Individual Log Report (asynchronous) ... Test title: Get Individual Log Report (asynchronous) ... Test objective: The objective is to test the retrieval of an individual log report is ongoing and no log report is available yet. ... Pre-conditions: One or more log reports are set. - ... Reference: clause 8.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -49,7 +44,7 @@ Get Individual Log Report with invalid resource endpoint ... Test title: Get Individual Log Report with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of an individual log report fails when using an invalid resource endpoint. ... Pre-conditions: One or more log reports are set. - ... Reference: clause 8.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.5.3.2 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -62,7 +57,7 @@ PUT Individual Log Report - Method not implemented ... Test title: PUT Individual Log Report - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing log report. ... Pre-conditions: none - ... Reference: clause 8.5.5.3.3 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.5.3.3 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -74,7 +69,7 @@ PATCH Individual Log Report - Method not implemented ... Test title: PATCH Individual Log Report - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existinglog report. ... Pre-conditions: none - ... Reference: clause 8.5.5.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.5.3.4 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -86,7 +81,7 @@ DELETE Individual Log Report - Method not implemented ... Test title: DELETE Individual Log Report - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing log report. ... Pre-conditions: none - ... Reference: clause 8.5.5.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.5.3.5 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOLogManagement-API/IndividualSubscription.robot b/SOL009/NFVMANOLogManagement-API/IndividualSubscription.robot index d89a0bdc3c5a8903c3909c2e8e48fd00cde24eff..d626639f2abb85d5efc2d91713e7732035de6ae2 100644 --- a/SOL009/NFVMANOLogManagement-API/IndividualSubscription.robot +++ b/SOL009/NFVMANOLogManagement-API/IndividualSubscription.robot @@ -1,9 +1,4 @@ *** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt # Generic Parameters -Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false -Library OperatingSystem -Library JSONLibrary Resource NFVMANOLogManagementKeywords.robot *** Test Cases *** @@ -12,7 +7,7 @@ GET Individual Subscription ... Test title: GET Individual Subscription ... Test objective: The objective is to test the retrieval of individual subscription and perform a JSON schema validation of the returned subscription data structure ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -26,7 +21,7 @@ GET Individual Subscription - invalid resource identifier ... Test title: GET Individual Subscription - invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual subscription fails when using an invalid resource identifier ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.8.3.2 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -39,7 +34,7 @@ DELETE Individual Subscription ... Test title: DELETE Individual Subscription ... Test objective: The objective is to test the deletion of an individual subscription ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.8.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.8.3.5 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The is not available anymore in the NFV-MANO @@ -52,7 +47,7 @@ DELETE Individual Subscription - invalid resource identifier ... Test title: DELETE Individual Subscription - invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual subscription fails when using an invalid resource identifier ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.8.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.8.3.5 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -64,7 +59,7 @@ POST Individual Subscription - Method not implemented ... Test title: POST Individual Subscription - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new Subscription ... Pre-conditions: none - ... Reference: clause 8.5.8.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.8.3.1 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -76,7 +71,7 @@ PUT Individual Subscription - Method not implemented ... Test title: PUT Individual Subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing subscription ... Pre-conditions: none - ... Reference: clause 8.5.8.3.3 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.8.3.3 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -88,7 +83,7 @@ PATCH Individual Subscription - Method not implemented ... Test title: PATCH Individual Subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing subscription ... Pre-conditions: none - ... Reference: clause 8.5.8.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.8.3.4 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot b/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot index 5b2599a5ff22fd88ea5ee09ed316bfaef05e59bb..1d5c86df15474dc24cb3f59506fedbdcef0f58f5 100644 --- a/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot +++ b/SOL009/NFVMANOLogManagement-API/LoggingJobs.robot @@ -1,10 +1,5 @@ *** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt Resource NFVMANOLogManagementKeywords.robot -Library JSONLibrary -Library OperatingSystem -Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false *** Test Cases *** POST Create a new logging job @@ -12,7 +7,7 @@ POST Create a new logging job ... Test title: POST Create a new logging job ... Test objective: The objective is to create a new logging job, and perform the JSON schema validation of the operation HTTP response. ... Pre-conditions: none - ... Reference: clause 8.5.3.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.3.3.1 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: logging job created @@ -27,7 +22,7 @@ GET information about logging jobs ... Test title: GET information logging jobs ... Test objective: The objective is to retrieve information about logging jobs, and perform the JSON schema validation of the operation HTTP response. ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -40,7 +35,7 @@ GET Logging jobs - invalid attribute-based filter ... Test title: GET Logging jobs - invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of logging jobs fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -53,7 +48,7 @@ GET Logging jobs - invalid attribute selector ... Test title: GET Logging jobs - invalid attribute selector ... Test objective: The objective is to test that the retrieval of logging jobs fails when using invalid attribute selector, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -66,7 +61,7 @@ GET Logging jobs - Bad Request Response too Big ... Test title: GET Logging jobs - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of Logging job fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -79,7 +74,7 @@ GET information about logging jobs with attribute-based filter ... Test title: GET information about logging jobs with attribute-based filter ... Test objective: The objective is to retrieve information about the logging jobs with attribute filters, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -92,7 +87,7 @@ GET information about logging jobs with "all_fields" attribute selector ... Test title: GET information about logging jobs with "all_fields" attribute selector ... Test objective: The objective is to retrieve information about logging jobs with "all_fields" attribute selector, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -105,7 +100,7 @@ GET information about Logging Jobs with "exclude_default" attribute selector ... Test title: GET information about Logging Jobs with "exclude_default" attribute selector ... Test objective: The objective is to retrieve information about logging jobs with "exclude_default" attribute selector, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -118,7 +113,7 @@ GET information about Logging Jobs with "fields" attribute selector ... Test title: GET information about Logging Jobs with fields attribute selector ... Test objective: The objective is to retrieve information about Logging Jobs with fields attribute selector, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -131,7 +126,7 @@ GET information about Logging Jobs with "exclude_fields" attribute selector ... Test title: GET information about Logging Jobs with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve information about the Logging Jobs with "exclude_fields" attribute selector, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -144,7 +139,7 @@ GET information about Logging Jobs with "fields" and "exclude_default" attribute ... Test title: GET information about Logging Jobs with fields and exclude_default attribute selector ... Test objective: The objective is to retrieve information about Logging Jobs with fields and exclude_default attribute selector, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -157,7 +152,7 @@ GET information about Logging Jobs with Paged Response ... Test title: GET information about Logging Jobs with Paged Response ... Test objective: The objective is to query information about Logging Jobs to get Paged Response. ... Pre-conditions: At least one logging job is created. - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -170,7 +165,7 @@ GET information about Logging Jobs with malformed authorization token ... Test title: GET information about Logging Jobs with malformed authorization token ... Test objective: The objective is to test that the retrieval of information about Logging Jobs fails when using malformed authorization token. ... Pre-conditions: none - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -182,7 +177,7 @@ GET information about Logging Jobs without authorization token ... Test title: GET information about Logging Jobs without authorization token ... Test objective: The objective is to test that the retrieval of information about Logging Jobs fails when omitting the authorization token. ... Pre-conditions: none - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -194,7 +189,7 @@ GET information about Logging Jobs with expired or revoked authorization token ... Test title: GET information about Logging Jobs with expired or revoked authorization token ... Test objective: The objective is to test that the retrieval of information about Logging Jobs fails when using expired or revoked authorization token. ... Pre-conditions: none - ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.3.3.2 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The Peer Entity requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -206,7 +201,7 @@ PUT Logging Jobs - Method not implemented ... Test title: PUT Logging Jobs - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: clause 8.5.3.3.3 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.3.3.3 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -218,7 +213,7 @@ PATCH Logging Jobs - Method not implemented ... Test title: PATCH Logging Jobs - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: clause 8.5.3.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.3.3.4 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -230,7 +225,7 @@ DELETE Logging Jobs - Method not implemented ... Test title: DELETE Logging Jobs - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: clause 8.5.3.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.3.3.5 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none diff --git a/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot b/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot index e1be24d63e3215fb0619a4d1a0bfb3f7b527c53c..e3bc90bebaad139169b13938ab73f3515e7865fa 100644 --- a/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot +++ b/SOL009/NFVMANOLogManagement-API/NFVMANOLogManagementKeywords.robot @@ -34,7 +34,7 @@ POST Create a new logging job Log Create a logging job Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Set Headers {"Authorization":"${AUTHORIZATION}"} + Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/createLoggingJobRequest.json ${body}= Format String ${template} objectInstanceId=${objectInstanceId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs ${body} @@ -48,7 +48,7 @@ Check Post-Condition Logging job is created GET Logging Jobs Log Query to GET information about logging jobs. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs ${outputResponse}= Output response @@ -58,7 +58,7 @@ GET Logging Jobs with malformed authorization token Pass Execution If ${AUTH_USAGE} == 0 Skipping test as NFVO is not supporting authentication Log The GET method queries using invalid token Set Headers {"Accept": "${ACCEPT_JSON}"} - Set Headers {"Authorization": "${BAD_AUTHORIZATION}"} + Set Headers {"${AUTHORIZATION_HEADER}": "${BAD_AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs ${output}= Output response @@ -77,7 +77,7 @@ GET Logging Jobs with expired or revoked authorization token Pass Execution If ${AUTH_USAGE} == 0 Skipping test as it is not supporting authentication Log The GET method queries using invalid token Set Headers {"Accept": "${ACCEPT_JSON}"} - Set Headers {"Authorization": "${NEG_AUTHORIZATION}"} + Set Headers {"${AUTHORIZATION_HEADER}": "${NEG_AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs ${output}= Output response @@ -85,7 +85,7 @@ GET Logging Jobs with expired or revoked authorization token GET Logging Job with invalid filter Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs?attribute_not_exist=some_value ${outputResponse}= Output response @@ -93,7 +93,7 @@ GET Logging Job with invalid filter GET Logging Job with invalid selector Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs?fields=wrong_field ${outputResponse}= Output response @@ -102,7 +102,7 @@ GET Logging Job with invalid selector GET Logging Job with filter Log Query information about logging jobs with filters. Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Log Execute Query and validate response Get ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs?${alarm_filter}=${filter_value} ${outputResponse}= Output response @@ -111,7 +111,7 @@ GET Logging Job with filter GET Logging jobs with all_fields attribute selector Log Queries information about logging jobs, using all_fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -119,7 +119,7 @@ GET Logging jobs with all_fields attribute selector GET Logging Jobs with exclude_default attribute selector Log Queries information about logging jobs, using exclude_default Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs?exclude_default ${output}= Output response Set Suite Variable ${response} ${output} @@ -127,7 +127,7 @@ GET Logging Jobs with exclude_default attribute selector GET Logging Jobs with fields attribute selector Log Queries information about Logging Jobs, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs?fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -135,7 +135,7 @@ GET Logging Jobs with fields attribute selector GET Logging Jobs with fields and exclude_default attribute selector Log Queries information about Logging Jobs, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs?exclude_default&fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -143,7 +143,7 @@ GET Logging Jobs with fields and exclude_default attribute selector GET Logging Jobs with exclude_fields attribute selector Log Query NFV-MANO The GET method queries information about multiple alarms, using fields Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs?exclude_fields=${fields} ${output}= Output response Set Suite Variable ${response} ${output} @@ -155,21 +155,21 @@ Check HTTP Response Header Contains Link PUT Logging Jobs log Trying to perform a PUT. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Put ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} PATCH Logging Jobs log Trying to perform a PATCH. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Patch ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} DELETE Logging Jobs log Trying to perform a DELETE. This method should not be implemented Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Delete ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs ${outputResponse}= Output response Set Global Variable @{response} ${outputResponse} @@ -177,7 +177,7 @@ DELETE Logging Jobs Send Post request for individual Logging Job Log Trying to perform a POST (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -185,7 +185,7 @@ Send Post request for individual Logging Job GET individual Logging Job Log Trying to get a Logging Job Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -199,7 +199,7 @@ Check HTTP Response Body Logging Job Identifier matches the requested Logging Jo GET individual Logging Job with invalid resource identifier Log Trying to perform a negative get, using erroneous logging Job identifier Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -207,7 +207,7 @@ GET individual Logging Job with invalid resource identifier Send Put request for individual Logging Job Log Trying to perform a PUT (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -218,7 +218,7 @@ Send Put request for individual Logging Job Send Patch request for individual Logging Job Log Trying to perform a PATCH (method should not be implemented) Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -227,7 +227,7 @@ Send Patch request for individual Logging Job Send Delete request for individual Logging Job Log Trying to delete an existing logging Job Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -240,14 +240,14 @@ Check Postcondition Logging Job is Deleted Send Delete request for individual Logging Job with invalid resource identifier Log Trying to perform a negative delete, using erroneous Logging Job identifier Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${erroneousLogJobId} ${output}= Output response Set Suite Variable ${response} ${output} Send Post request for Individual Log Report Log Trying to create new log report - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/log_reports/${newReportId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -255,7 +255,7 @@ Send Post request for Individual Log Report Get Individual Log Report Log Trying to get log report Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/log_reports/${reportId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -263,14 +263,14 @@ Get Individual Log Report Get Individual Log Report with invalid resource endpoint Log Trying to get a log report with invalid resource endpoint Set Headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/log_reports/${erroneousReportId} ${output}= Output response Set Suite Variable ${response} ${output} Send Put request for Individual Log Report Log Trying to update log report - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/log_reports/${reportId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -280,7 +280,7 @@ Send Put request for Individual Log Report Send Patch request for Individual Log Report Log Trying to update log report - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/log_reports/${reportId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -290,7 +290,7 @@ Send Patch request for Individual Log Report Send Delete request for Individual Log Report Log Trying to delete log report - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/log_reports/${reportId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -300,7 +300,7 @@ Send Log data Request in Synchronous mode Pass Execution If ${SYNC_MODE} == 0 The compile process is asynchronous mode. Skipping the test Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/compileLogRequest.json ${body}= Format String ${template} objectInstanceId=${objectInstanceId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/compile_log ${body} @@ -316,7 +316,7 @@ Send Log data Request in Asynchronous mode Pass Execution If ${SYNC_MODE} == 1 The compile process is synchronous mode. Skipping the test Set Headers {"Accept": "${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/compileLogRequest.json ${body}= Format String ${template} objectInstanceId=${objectInstanceId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/compile_log ${body} @@ -329,7 +329,7 @@ Send Log data Request in Asynchronous mode Get Success notification log Trying to read an compiled file Set Headers {"Accept":"${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${response['headers']['Location']} Log Validate Status code Integer response status 200 @@ -340,7 +340,7 @@ Get Success notification Send Log data Request Set Headers {"Accept":"${ACCEPT}"} Set Headers {"Content-Type": "${CONTENT_TYPE}"} - Set Headers {"Authorization":"${AUTHORIZATION}"} + Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/createLoggingJobRequest.json ${body}= Format String ${template} objectInstanceId=${objectInstanceId} Post ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/compile_log ${body} @@ -349,14 +349,14 @@ Send Log data Request Send Get Compiled Log Data Log Trying to delete log report - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/compile_log ${output}= Output response Set Suite Variable ${response} ${output} Send Put Compiled Log Data Log Trying to update log report - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/compile_log ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -366,7 +366,7 @@ Send Put Compiled Log Data Send Patch Compiled Log Data Log Trying to update log report - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/compile_log ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -376,7 +376,7 @@ Send Patch Compiled Log Data Send Delete Compiled Log Data Log Trying to delete log report - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/log_jobs/${logJobId}/compile_log ${output}= Output response Set Suite Variable ${response} ${output} @@ -398,7 +398,7 @@ Get all Subscriptions [Documentation] The api consumer can use this method to query the list of active subscriptions to log management notifications Set headers {"Accept": "application/json"} Set headers {"Content-Type": "application/json"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -406,7 +406,7 @@ Get all Subscriptions Get Subscriptions with attribute-based filters [Documentation] The api consumer can use this method to query the list of active subscriptions to log management notifications Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ok} ${output}= Output response Set Suite Variable ${response} ${output} @@ -414,7 +414,7 @@ Get all Subscriptions Get Subscriptions with invalid attribute-based filters [Documentation] The api consumer can use this method to query the list of active subscriptions to log management notifications Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?${filter_ko} ${output}= Output response Set Suite Variable ${response} ${output} @@ -422,7 +422,7 @@ Get Subscriptions with invalid attribute-based filters Get subscriptions with filter "id" Log Get the list of active subscriptions using a filter "id" Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?id=${subscription_id} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} @@ -433,26 +433,36 @@ Check PostCondition HTTP Response Body Subscription Matches the requested attrib Get subscriptions with filter "filter_notificationTypes" Log Get the list of active subscriptions using a filter "filter.notificationTypes" Set Headers {"Accept": "${ACCEPT}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions?filter.notificationTypes=${notification_type} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} Check PostCondition HTTP Response Body Subscriptions Matches the requested attribute-based filter "filter_notificationTypes" - :FOR ${item} IN @{response['body']} - Should Be Equal As Strings ${item['filter']['notificationTypes']} ${notification_type} + FOR ${item} IN @{response['body']} + Should Be Equal As Strings ${item['filter']['notificationTypes']} ${notification_type} END Send Post Request for Subscription Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": ${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/subscriptions.json ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} ${output}= Output response Set Suite Variable ${response} ${output} +Send Post Request for Subscription with unreachable callbackUri + Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/subscriptions.json + ${body}= Format String ${template} callback_uri=${unreachable_callback_uri} callback_endpoint=${callback_endpoint} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} + ${output}= Output response + Set Suite Variable ${response} ${output} + Check HTTP Response Body LogmSubscription Attributes Values Match the Issued Subscription Log Check Response matches subscription ${template}= Get File jsons/subscriptions.json @@ -469,9 +479,23 @@ Check Postcondition Subscription Is Set Check HTTP Response Status Code Is 200 Send Post Request for Duplicated Subscription + Log POST request for duplicated subscription + Pass Execution If ${NFVMANO_ALLOWS_DUPLICATE_SUBS}==0 Skipping test as duplicate subscription is not enabled + Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Set headers {"Accept": "${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template}= Get File jsons/subscriptions.json + ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} + POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false + ${output}= Output response + Set Suite Variable ${response} ${output} + +Send Post Request for No Duplicated Subscription + Log POST request for duplicated subscription + Pass Execution If ${NFVMANO_ALLOWS_DUPLICATE_SUBS}==1 Skipping test as duplicate subscription is enabled Set headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} ${template}= Get File jsons/subscriptions.json ${body}= Format String ${template} callback_uri=${callback_uri} callback_endpoint=${callback_endpoint} POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false @@ -500,7 +524,7 @@ Check Postcondition Subscription Resource Returned in Location Header Is Availab Send Put Request for Subscriptions [Documentation] This method is not supported. When this method is requested on this resource, the NFV-MANO shall return a "405 Method ... Not Allowed" response as defined in clause 4.3.5.4. - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PUT ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -508,7 +532,7 @@ Send Put Request for Subscriptions Send Patch Request for Subscriptions [Documentation] This method is not supported. When this method is requested on this resource, the NFV-MANO shall return a "405 Method ... Not Allowed" response as defined in clause 4.3.5.4. - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} @@ -516,14 +540,14 @@ Send Patch Request for Subscriptions Send Delete Request for Subscriptions [Documentation] This method is not supported. When this method is requested on this resource, the NFV-MANO shall return a "405 Method ... Not Allowed" response as defined in clause 4.3.5.4. - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${output}= Output response Set Suite Variable ${response} ${output} Get Individual Subscription Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -535,14 +559,14 @@ Check HTTP Response Body Subscription Identifier matches the requested Subscript GET individual Subscription with invalid resource identifier Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} Send Delete request for individual Subscription Set headers {"Accept": "${ACCEPT_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response Set Suite Variable ${response} ${output} @@ -554,19 +578,19 @@ Check Postcondition Subscription is Deleted Send Delete request for individual Subscription with invalid resource identifier Log Trying to delete a subscription in the VNFM with invalid id - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} DELETE ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${erroneousSubscriptionId} ${output}= Output response Set Suite Variable @{response} ${output} Send Post request for individual Subscription - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} POST ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${newSubscriptionId} ${output}= Output response Set Suite Variable @{response} ${output} Send Put request for individual Subscription - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} @@ -575,10 +599,144 @@ Send Put request for individual Subscription Set Suite Variable @{response} ${output} Send Patch request for individual Threshold - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization": "${AUTHORIZATION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${origOutput}= Output response Set Suite Variable ${origResponse} ${origOutput} PATCH ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} ${output}= Output response - Set Suite Variable @{response} ${output} \ No newline at end of file + Set Suite Variable @{response} ${output} + +Trigger the availability of Log Report (external action) + #do nothing + Log do nothing + +Check Log Report Available Notification Http POST Request Body Json Schema Is + [Arguments] ${element} + ${schema}= Get File schemas/${element}.schema.json + Configure Notification Forward ${schema} ${callback_endpoint} ${callback_endpoint_fwd} + +Check Log Report Available Notification Http POST Request Body notificationType attribute Is + [Arguments] ${type} + Configure Notification Log Report Available Handler ${callback_endpoint_fwd} ${type} + Wait Until Keyword Succeeds ${total_polling_time} ${polling_interval} Verify Mock Expectation ${notification_request} + Clear Requests ${callback_endpoint} + Clear Requests ${callback_endpoint_fwd} + +Check Threshold Crossed Notification Http POST Request Body Json Schema Is + [Arguments] ${element} + ${schema}= Get File schemas/${element}.schema.json + Configure Notification Forward ${schema} ${callback_endpoint} ${callback_endpoint_fwd} + +Configure Notification Log Report Available Handler + [Arguments] ${endpoint} ${type} + ${json}= evaluate {} + set to dictionary ${json} notificationType ${type} + ${BODY}= evaluate json.dumps(${json}) json + Log Creating mock request and response to handle status notification + &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} + Set Global Variable ${notification_request} ${req} + &{notification_response}= Create Mock Response status_code=204 + Create Mock Expectation ${notification_request} ${notification_response} + +Configure Notification Forward + [Arguments] ${schema} ${endpoint} ${endpoint_fwd} + Log Creating mock Http POST forward to handle ${schema} + &{notification_tmp}= Create Mock Request Matcher POST ${endpoint} body_type="JSON_SCHEMA" body=${schema} + &{notification_fwd}= Create Mock Http Forward ${endpoint_fwd} + Create Mock Expectation With Http Forward ${notification_tmp} ${notification_fwd} + +Create Sessions for Notifications + Start Process java -jar ${MOCK_SERVER_JAR} -serverPort ${callback_port} alias=mockInstance + Wait For Process handle=mockInstance timeout=5s on_timeout=continue + Create Mock Session ${callback_uri}:${callback_port} + +Check resource existence and get CallbackUri + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} + Integer response status 200 + Validate Json response body LogmSubscription.schema.json + Set Global Variable ${callbackResp} response body callbackUri + +Post Log Report Available Notification + log Trying to perform a POST to get notification + Set Headers {"Accept":"${ACCEPT_JSON}"} + Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + ${template} = Get File jsons/LogReportAvailableNotification.json + ${body}= Format String ${template} subscriptionId=${subscriptionId} objectInstanceId=${objectInstanceId} + Post ${callbackResp} ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Post ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${apiRoot}/${apiName}/api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +POST API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Post ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +GET API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PUT API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +PATCH API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE API Version with apiMajorVersion + Set Headers {"Accept":"${ACCEPT_JSON}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${apiRoot}/${apiName}/${apiMajorVersion} /api_versions + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} diff --git a/SOL009/NFVMANOLogManagement-API/NotificationEndpoint.robot b/SOL009/NFVMANOLogManagement-API/NotificationEndpoint.robot index 1fd55de425e5d57f6d8b49ffdcef440616e0e8cd..aa4a4906fd65c3abb7146336f0bc83a158501be8 100644 --- a/SOL009/NFVMANOLogManagement-API/NotificationEndpoint.robot +++ b/SOL009/NFVMANOLogManagement-API/NotificationEndpoint.robot @@ -1,10 +1,5 @@ *** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt -Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false -Library OperatingSystem -Library JSONLibrary -Library String +Resource NFVMANOLogManagementKeywords.robot Suite Setup Check resource existence and get CallbackUri *** Test Cases *** @@ -13,35 +8,9 @@ Log Report Available Notification ... Test title: Log Report Available Notification ... Test objective: The objective is to test that Log Report Available Notification is delivered with success to the notification consumer. ... Pre-conditions: A subscription for log report available notification is available in the NFV-MANO. - ... Reference: clause 8.5.9.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.9.3.1 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none Post Log Report Available Notification Check HTTP Response Status Code Is 204 - -*** Keywords *** -Check resource existence and get CallbackUri - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - Get ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions/${subscriptionId} - Integer response status 200 - Validate Json response body LogmSubscription.schema.json - Set Global Variable ${callbackResp} response body callbackUri - -Check HTTP Response Status Code Is - [Arguments] ${expected_status} - Should Be Equal As Strings ${response['status']} ${expected_status} - Log Status code validated - -Post Log Report Available Notification - log Trying to perform a POST to get notification - Set Headers {"Accept":"${ACCEPT_JSON}"} - Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} - Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"Authorization":"${AUTHORIZATION}"} - ${template} = Get File jsons/LogReportAvailableNotification.json - ${body}= Format String ${template} subscriptionId=${subscriptionId} objectInstanceId=${objectInstanceId} - Post ${callbackResp} ${body} - ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} diff --git a/SOL009/NFVMANOLogManagement-API/Notifications.robot b/SOL009/NFVMANOLogManagement-API/Notifications.robot index 124d7f74319873a2639de63b30d63f7e25727fc4..62cd0a40284813f33e2502380ad8d71b6b0b0c5e 100644 --- a/SOL009/NFVMANOLogManagement-API/Notifications.robot +++ b/SOL009/NFVMANOLogManagement-API/Notifications.robot @@ -1,14 +1,7 @@ *** Setting *** -Resource environment/variables.txt -Suite Setup Create Sessions +Resource NFVMANOLogManagementKeywords.robot +Suite Setup Create Sessions for Notifications Suite Teardown Terminate All Processes kill=true -Library MockServerLibrary -Library Process -Library OperatingSystem -Library BuiltIn -Library Collections -Library String - *** Test Cases *** Log Report Avaliable Notification @@ -16,57 +9,10 @@ Log Report Avaliable Notification ... Test title: Log Report Avaliable Notification ... Test objective: The objective is to test the dispatch of Log Report Avaliable Notification when new log report is available in the NFV-MANO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: none - ... Reference: clause 8.5.9.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.9.3.1 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none Trigger the availability of Log Report (external action) Check Log Report Available Notification Http POST Request Body Json Schema Is LogReportAvailableNotification Check Log Report Available Notification Http POST Request Body notificationType attribute Is LogReportAvailableNotification -*** Keywords *** -Trigger the availability of Log Report (external action) - #do nothing - Log do nothing - - -Check Log Report Available Notification Http POST Request Body Json Schema Is - [Arguments] ${element} - ${schema}= Get File schemas/${element}.schema.json - Configure Notification Forward ${schema} ${callback_endpoint} ${callback_endpoint_fwd} - -Check Log Report Available Notification Http POST Request Body notificationType attribute Is - [Arguments] ${type} - Configure Notification Log Report Available Handler ${callback_endpoint_fwd} ${type} - Wait Until Keyword Succeeds 2 min 10 sec Verify Mock Expectation ${notification_request} - Clear Requests ${callback_endpoint} - Clear Requests ${callback_endpoint_fwd} - -Check Threshold Crossed Notification Http POST Request Body Json Schema Is - [Arguments] ${element} - ${schema}= Get File schemas/${element}.schema.json - Configure Notification Forward ${schema} ${callback_endpoint} ${callback_endpoint_fwd} - - -Configure Notification Log Report Available Handler - [Arguments] ${endpoint} ${type} - ${json}= evaluate {} - set to dictionary ${json} notificationType ${type} - ${BODY}= evaluate json.dumps(${json}) json - Log Creating mock request and response to handle status notification - &{req}= Create Mock Request Matcher POST ${endpoint} body_type="JSON" body=${BODY} - Set Global Variable ${notification_request} ${req} - &{notification_response}= Create Mock Response status_code=204 - Create Mock Expectation ${notification_request} ${notification_response} - - -Configure Notification Forward - [Arguments] ${schema} ${endpoint} ${endpoint_fwd} - Log Creating mock Http POST forward to handle ${schema} - &{notification_tmp}= Create Mock Request Matcher POST ${endpoint} body_type="JSON_SCHEMA" body=${schema} - &{notification_fwd}= Create Mock Http Forward ${endpoint_fwd} - Create Mock Expectation With Http Forward ${notification_tmp} ${notification_fwd} - -Create Sessions - Start Process java -jar ${MOCK_SERVER_JAR} -serverPort ${callback_port} alias=mockInstance - Wait For Process handle=mockInstance timeout=5s on_timeout=continue - Create Mock Session ${callback_uri}:${callback_port} \ No newline at end of file diff --git a/SOL009/NFVMANOLogManagement-API/Subscriptions.robot b/SOL009/NFVMANOLogManagement-API/Subscriptions.robot index 970ba04e050fd468f3a1dc0ec9ae2c5f95e1995c..7ba7065fd3625f0bbe1b4bc470b9b2c1ecd94465 100644 --- a/SOL009/NFVMANOLogManagement-API/Subscriptions.robot +++ b/SOL009/NFVMANOLogManagement-API/Subscriptions.robot @@ -1,12 +1,5 @@ *** Settings *** -Library JSONSchemaLibrary schemas/ -Resource environment/variables.txt -Library REST ${NFVMANO_SCHEMA}://${NFVMANO_HOST}:${NFVMANO_PORT} ssl_verify=false -Library OperatingSystem -Library JSONLibrary Resource NFVMANOLogManagementKeywords.robot -Library MockServerLibrary -Library Process Suite Setup Create Sessions Suite Teardown Terminate All Processes kill=true @@ -16,7 +9,7 @@ GET all Subscriptions ... Test title: GET all Subscriptions ... Test objective: The objective is to test the retrieval list of active subscriptions list to log management notifications and perform a JSON schema validation of the returned subscriptions data structure ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -29,7 +22,7 @@ GET Subscriptions with attribute-based filter ... Test title: GET Subscriptions with attribute-based filter ... Test objective: The objective is to test the retrieval of active subscriptions list to log management notifications using attribute-based filter, perform a JSON schema validation of the collected indicators data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -42,7 +35,7 @@ GET Subscriptions with Paged Response ... Test title: GET Subscriptions with Paged Response ... Test objective: The objective is to query information of active subscriptions list to log management notifications to get Paged Response. ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -55,7 +48,7 @@ GET Subscriptions - invalid attribute-based filter ... Test title: GET Subscriptions - invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of active subscriptions list to log management notifications fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -68,7 +61,7 @@ GET Subscriptions - Bad Request Response too Big ... Test title: GET Subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of active subscriptions list to log management notifications fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -81,7 +74,7 @@ GET Subscriptions - invalid resource endpoint ... Test title: GET Subscriptions - invalid resource endpoint ... Test objective: The objective is to test that the retrieval of active subscriptions list to log management notifications fails when using invalid resource endpoint. ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -94,7 +87,7 @@ GET Subscription with attribute-based filter "id" ... Test title: GET Subscription with attribute-based filter "id" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "id" ... Pre-conditions: none - ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -108,7 +101,7 @@ Get subscriptions with filter "filter.notificationTypes" ... Test title: GET Subscription with attribute-based filter "filter.notificationTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.notificationTypes" ... Pre-conditions: none - ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.7.3.2 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -117,12 +110,12 @@ Get subscriptions with filter "filter.notificationTypes" Check HTTP Response Body Json Schema Is LogmSubscriptions Check PostCondition HTTP Response Body Subscriptions Matches the requested attribute-based filter "filter_notificationTypes" -Create new Subscription +POST Create new Subscription [Documentation] Test ID: 8.3.4.5.9 - ... Test title: Create new Subscription + ... Test title: POST Create new Subscription ... Test objective: The objective is to test the creation of a new subscription to log management notification and perform a JSON schema and content validation of the returned subscription data structure ... Pre-conditions: none - ... Reference: clause 8.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: The subscription is successfully set and it matches the issued subscription @@ -132,29 +125,29 @@ Create new Subscription Check HTTP Response Body LogmSubscription Attributes Values Match the Issued Subscription Check Postcondition Subscription Is Set -Create request for duplicated Subscription not creating duplicated subscriptions +POST Create request for duplicated Subscription not creating duplicated subscriptions [Tags] no-duplicated-subs [Documentation] Test ID: 8.3.4.5.10 - ... Test title: Create request for duplicated Subscription not creating duplicated subscriptions + ... Test title: POST Create request for duplicated Subscription not creating duplicated subscriptions ... Test objective: The objective is to test the attempt of a creation of a duplicated subscription failed and check that no new subscription is created and a link to the original subscription is returned ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO does not support the creation of duplicated subscriptions ... Post-Conditions: The existing Subscription returned is available in the NFV-MANO - Send Post Request for Duplicated Subscription + Send Post Request for No Duplicated Subscription Check HTTP Response Status Code Is 303 Check HTTP Response Body Is Empty Check HTTP Response Header Contains Location Check Postcondition Subscription Resource Returned in Location Header Is Available -Create request for duplicated Subscription creating duplicated subscriptions +POST Create request for duplicated Subscription creating duplicated subscriptions [Tags] duplicated-subs [Documentation] Test ID: 8.3.4.5.11 - ... Test title: Create request for duplicated Subscription creating duplicated subscriptions + ... Test title: POST Create request for duplicated Subscription creating duplicated subscriptions ... Test objective: The objective is to test the creation of a duplicated subscription and perform a JSON schema and content validation of the returned duplicated subscription data structure ... Pre-conditions: At least one subscription is available in the NFV-MANO. - ... Reference: clause 8.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: The NFV-MANO supports the creation of duplicated subscriptions ... Post-Conditions: The duplicated subscription is successfully set and it matches the issued subscription @@ -169,7 +162,7 @@ PUT Subscriptions - Method not implemented ... Test title: PUT Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify subscriptions ... Pre-conditions: none - ... Reference: clause 8.5.7.3.3 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.7.3.3 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -181,7 +174,7 @@ PATCH Subscriptions - Method not implemented ... Test title: PATCH Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update subscriptions ... Pre-conditions: none - ... Reference: clause 8.5.7.3.4 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.7.3.4 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -193,9 +186,22 @@ DELETE Subscriptions - Method not implemented ... Test title: DELETE Subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete subscriptions ... Pre-conditions: none - ... Reference: clause 8.5.7.3.5 - ETSI GS NFV-SOL 009 [7] v3.3.1 + ... Reference: clause 8.5.7.3.5 - ETSI GS NFV-SOL 009 [7] v3.5.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none Send Delete Request for Subscriptions - Check HTTP Response Status Code Is 405 \ No newline at end of file + Check HTTP Response Status Code Is 405 + +POST Create new Subscription - Unprocessable entity + [Documentation] Test ID: 8.3.4.5.15 + ... Test title: POST Create new Subscription - Unprocessable entity + ... Test objective: The objective is to test that a new log management subscription is not created if the notification endpoint is unreachable by the NFV-MANO. + ... Pre-conditions: none + ... Reference: clause 8.5.7.3.1 - ETSI GS NFV-SOL 009 [7] v3.5.1 + ... Config ID: Config_prod_NFV-MANO + ... Applicability: Notification endpoint is unreachable by the NFV-MANO. + ... Post-Conditions: none + Send Post Request for Subscription with unreachable callbackUri + Check HTTP Response Status Code Is 422 + Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL009/NFVMANOLogManagement-API/environment/variables.txt b/SOL009/NFVMANOLogManagement-API/environment/variables.txt index 0b09b860f399dbd0ad24987b8b8d39561308bf8d..272f600eac58a455aff4fe090f227f135044e013 100644 --- a/SOL009/NFVMANOLogManagement-API/environment/variables.txt +++ b/SOL009/NFVMANOLogManagement-API/environment/variables.txt @@ -6,17 +6,17 @@ ${NFVMANO_SCHEMA} https ${logJobId} 0b000d4f1a2b67 ${erroneousLogJobId} wrongID - -${AUTHORIZATION} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 -${NEG_AUTHORIZATION} Bearer negativetoken -${BAD_AUTHORIZATION} Bear sometoken +${AUTHORIZATION_HEADER} Authorization +${AUTHORIZATION_TOKEN} Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 +${NEG_AUTHORIZATION_TOKEN} Bearer negativetoken +${BAD_AUTHORIZATION_TOKEN} Bear sometoken ${CONTENT_TYPE} application/json ${CONTENT_TYPE_JSON} application/json ${ACCEPT_JSON} application/json ${ACCEPT} application/json ${AUTH_USAGE} 1 -${FIELD_USAGE} 1 + ${NFVMANO_CHECKS_NOTIF_ENDPOINT} 1 ## If true, during subscription, the FUT performs a get to the notification endpoint ${NFVMANO_ALLOWS_DUPLICATE_SUBS} 1 @@ -30,12 +30,13 @@ ${origResponse} {} ${callback_port} 9091 ${callback_uri} http://172.22.1.7:${callback_port} +${unreachable_callback_uri} http://unreachable_callback_uri-error-422 ${callback_endpoint} /nfvmanologm/subscriptions ${filter_ok} callbackUri=${callbackUri} ${filter_ko} erroneousFilter=erroneous ${callback_endpoint_fwd} /endpoint/check -${callback_endpoint_error} /subs_404 -${sleep_interval} 20s + + ${total_polling_time} 2 min ${polling_interval} 10 sec diff --git a/SOL009/NFVMANOLogManagement-API/schemas/LogReport.schema.json b/SOL009/NFVMANOLogManagement-API/schemas/LogReport.schema.json index 3e2d3219f253052c9d87c743220694c05cf54ce6..35eabbeccadbe3cdac01139f1a2ed00f403a9176 100644 --- a/SOL009/NFVMANOLogManagement-API/schemas/LogReport.schema.json +++ b/SOL009/NFVMANOLogManagement-API/schemas/LogReport.schema.json @@ -1,176 +1,156 @@ { - "description": "This type represents a log report, which provides information about a compiled log and how to obtain it. It shall comply with the provisions defined in table 8.6.2.7-1.\n", - "type": "object", - "required": [ - "id", - "objectInstanceId", - "compilationTrigger", - "readyTime", - "fileFormat", - "fileLocationInfo", - "securityAndIntegrityInfo", - "_links" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "objectInstanceId": { - "description": "This type represents the identifier to reference a managed object of a particular type. \n", - "type": "object", - "properties": { - "type": { - "description": "Indicates the type of managed object. Permitted values:\n - MANO_ENTITY\n - MANO_SERVICE\n - MANO_SERVICE_IF\n - CONSUMED_MANO_IF\n - MANO_ENTITY_COMPONENT\n\nThe \"MANO_ENTITY COMPONENT\" is only applicable if attribute \"manoEntityComponents\" in \"ManoEntity\" is supported by the API producer.\n", - "type": "string", - "enum": [ - "MANO_ENTITY", - "MANO_SERVICE", - "MANO_SERVICE_IF", - "CONSUMED_MANO_IF", - "MANO_ENTITY_COMPONENT" - ] - }, - "objectId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "subObjectId": { - "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", - "type": "string" - } + "description": "This type represents a log report, which provides information about a compiled log and how to obtain it. * NOTE:\tIt is not specified in the present document how the NFV-MANO functional entity's private\n key is provided to the NFV-MANO functional entity.\n", + "type": "object", + "required": [ + "id", + "objectInstanceId", + "compilationTrigger", + "readyTime", + "fileFormat", + "fileLocationInfo", + "securityAndIntegrityInfo", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "objectInstanceId": { + "description": "This type represents the identifier to reference a managed object of a particular type. \n", + "type": "object", + "properties": { + "type": { + "description": "Indicates the type of managed object. Permitted values:\n - MANO_ENTITY\n - MANO_SERVICE\n - MANO_SERVICE_IF\n - CONSUMED_MANO_IF\n - MANO_ENTITY_COMPONENT\n\nThe \"MANO_ENTITY COMPONENT\" is only applicable if attribute \"manoEntityComponents\" in \"ManoEntity\" is supported by the API producer.\n", + "type": "string", + "enum": [ + "MANO_ENTITY", + "MANO_SERVICE", + "MANO_SERVICE_IF", + "CONSUMED_MANO_IF", + "MANO_ENTITY_COMPONENT" + ] }, - "required": [ - "type", - "objectId" - ] - }, - "compilationTrigger": { - "description": "The trigger for the compilation of the log file.\nPermitted values: - ON_DEMAND: created based on explicit request by a client. - AUTOMATIC: created according to the logging job compilation configuration.", - "type": "string", - "enum": [ - "ON_DEMAND", - "AUTOMATIC" - ] - }, - "readyTime": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "expiryTime": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "fileSize": { - "description": "The size of the compiled log file in bytes, if known.", - "type": "integer", - "format": "int32" - }, - "fileFormat": { - "description": "The encoding used by the file.", - "type": "string" - }, - "fileLocationInfo": { - "description": "Location and address information of the compiled log file. The consumer can use this information to obtain the compiled log file.", - "type": "object", - "required": [ - "protocol", - "fileEndpoint" - ], - "properties": { - "protocol": { - "description": "Protocol over which the compiled log file can be retrieved.\nPermitted values: - HTTPS: transmission over HTTP Secure (HTTPS). - SFTP: transmission over SSH file transfer protocol (SFTP). - SCP: transmission over secure copy protocol (SCP). - FTPS: transmission over file transfer protocol secure (FTPS), as specified in IETF RFC 2228 [i.11],\n using explicit mode as specified in IETF RFC 4217 [i.12]. If FTPS is supported, \"private\" protection level shall be used.\n\nHTTPS shall be supported, and other protocols may be supported.", - "type": "string", - "enum": [ - "HTTPS", - "SFTP", - "SCP", - "FTPS" - ] - }, - "fileEndpoint": { - "description": "The host name (or IP address), optionally a port number (if the host with the compile log file uses a non-standard port number as per the supported transmission protocol), a valid file directory path, and the file name of the compiled log file, or a valid URL.", - "type": "string", - "format": "URI" - } + "objectId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subObjectId": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" } }, - "securityAndIntegrityInfo": { - "description": "Security and integrity information for the compilation of the log files.", - "type": "object", - "required": [ - "algorithm", - "hash", - "logFileSignature", - "signingCertificate" - ], - "properties": { - "algorithm": { - "description": "Algorithm used to generate the hash of the compiled log file. Only SHA-256 and SHA-512 shall be used", - "type": "string" - }, - "hash": { - "description": "The hexadecimal value of the hash of the compiled log file. The hash shall be computed from the encrypted compiled log file, in case the encryption applies.", - "type": "string" - }, - "encryptionPublicKey": { - "description": "Public key used for the encryption of the compiled log file. Shall be present if the compiled log file is encrypted.", - "type": "string" - }, - "cipherAlgorithm": { - "description": "The cryptographic algorithm used for the encryption. Shall be present if the compiled log file is encrypted. Valid values are: \"AES-CBC-128\", \"AES-GCM-128\", \"AES-CBC-256\", and \"AES-GCM-256\", as specified in clause 6.5 of ETSI GS NFV-SEC 012 [14].", - "type": "string" - }, - "logFileSignature": { - "description": "Signature to the compiled log file generated with the NFV-MANO functional entity’s private key, which is used to ensure the authenticity of the compiled log file. The signature shall be applied according to the \"encryptAndSignOrder\" of the \"LoggingJobConfig\".", - "type": "string" - }, - "signingCertificate": { - "description": "X.509 certificate with the NFV-MANO functional entity’s public key used for verifying the log report and compiled log file signatures.", - "type": "string" - } + "required": ["type", "objectId"] + }, + "compilationTrigger": { + "description": "The trigger for the compilation of the log file.\nPermitted values: - ON_DEMAND: created based on explicit request by a client. - AUTOMATIC: created according to the logging job compilation configuration.", + "type": "string", + "enum": ["ON_DEMAND", "AUTOMATIC"] + }, + "readyTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "expiryTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "fileSize": { + "description": "The size of the compiled log file in bytes, if known.", + "type": "integer", + "format": "int32" + }, + "fileFormat": { + "description": "The encoding used by the file.", + "type": "string" + }, + "fileLocationInfo": { + "description": "Location and address information of the compiled log file. The consumer can use this information to obtain the compiled log file.", + "type": "object", + "required": ["protocol", "fileEndpoint"], + "properties": { + "protocol": { + "description": "Protocol over which the compiled log file can be retrieved.\nPermitted values: - HTTPS: transmission over HTTP Secure (HTTPS). - SFTP: transmission over SSH file transfer protocol (SFTP). - SCP: transmission over secure copy protocol (SCP). - FTPS: transmission over file transfer protocol secure (FTPS), as specified in IETF RFC 2228,\n using explicit mode as specified in IETF RFC 4217. If FTPS is supported, \"private\" protection level shall be used.\n\nHTTPS shall be supported, and other protocols may be supported.", + "type": "string", + "enum": ["HTTPS", "SFTP", "SCP", "FTPS"] + }, + "fileEndpoint": { + "description": "The host name (or IP address), optionally a port number (if the host with the compile log file uses a non-standard port number as per the supported transmission protocol), a valid file directory path, and the file name of the compiled log file, or a valid URL.", + "type": "string", + "format": "URI" } - }, - "_links": { - "description": "Links for this resource.", - "type": "object", - "required": [ - "self" - ], - "properties": { - "self": { + } + }, + "securityAndIntegrityInfo": { + "description": "Security and integrity information for the compilation of the log files.", + "type": "object", + "required": [ + "algorithm", + "hash", + "logFileSignature", + "signingCertificate" + ], + "properties": { + "algorithm": { + "description": "Algorithm used to generate the hash of the compiled log file. Only SHA-256 and SHA-512 shall be used", + "type": "string" + }, + "hash": { + "description": "The hexadecimal value of the hash of the compiled log file. The hash shall be computed from the encrypted compiled log file, in case the encryption applies.", + "type": "string" + }, + "encryptionPublicKey": { + "description": "Public key used for the encryption of the compiled log file. Shall be present if the compiled log file is encrypted.", + "type": "string" + }, + "cipherAlgorithm": { + "description": "The cryptographic algorithm used for the encryption. Shall be present if the compiled log file is encrypted. Valid values are: \"AES-CBC-128\", \"AES-GCM-128\", \"AES-CBC-256\", and \"AES-GCM-256\", as specified in clause 6.5 of ETSI GS NFV-SEC 012.", + "type": "string" + }, + "logFileSignature": { + "description": "Signature to the compiled log file generated with the NFV-MANO functional entityΓÇÖs private key, which is used to ensure the authenticity of the compiled log file. The signature shall be applied according to the \"encryptAndSignOrder\" of the \"LoggingJobConfig\". See note.", + "type": "string" + }, + "signingCertificate": { + "description": "X.509 certificate with the NFV-MANO functional entityΓÇÖs public key used for verifying the log report and compiled log file signatures.", + "type": "string" + } + } + }, + "_links": { + "description": "Links for this resource.", + "type": "object", + "required": ["self"], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": ["href"], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "objects": { + "description": "Links to resources representing the object instances that are logged. Shall be present if the logged object instance information is accessible as a resource.", + "type": "array", + "items": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": [ - "href" - ], + "required": ["href"], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", "type": "string" } } - }, - "objects": { - "description": "Links to resources representing the object instances that are logged. Shall be present if the logged object instance information is accessible as a resource.", - "type": "array", - "items": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - } } } } } - } \ No newline at end of file + } +} diff --git a/SOL009/NFVMANOLogManagement-API/schemas/LogReportAvailableNotification.schema.json b/SOL009/NFVMANOLogManagement-API/schemas/LogReportAvailableNotification.schema.json index e1d6843993256f349e9aea92378f7e4e5a715dcb..68b80a5a1f2be16644f1f779086f75df18323579 100644 --- a/SOL009/NFVMANOLogManagement-API/schemas/LogReportAvailableNotification.schema.json +++ b/SOL009/NFVMANOLogManagement-API/schemas/LogReportAvailableNotification.schema.json @@ -1,126 +1,112 @@ { - "description": "This notification informs the receiver that the log report of the NFV-MANO functional entity is available. It shall comply with the provisions defined in table 8.6.2.4-1. The notification shall be triggered by the NFV-MANO functional entity when log information has been collected by the logging job and the log report is available.", - "type": "object", - "required": [ - "id", - "notificationType", - "subscriptionId", - "timeStamp", - "objectInstanceId", - "_links" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "notificationType": { - "description": "Discriminator for the different notification types. Shall be set to \"LogReportAvailableNotification\" for this notification type.", - "type": "string" - }, - "subscriptionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "timeStamp": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" + "description": "This notification informs the receiver that the log report of the NFV-MANO functional entity is available. It shall comply with the provisions defined in table 8.6.2.4-1. The notification shall be triggered by the NFV-MANO functional entity when log information has been collected by the logging job and the log report is available.", + "type": "object", + "required": [ + "id", + "notificationType", + "subscriptionId", + "timeStamp", + "objectInstanceId", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "notificationType": { + "description": "Discriminator for the different notification types. Shall be set to \"LogReportAvailableNotification\" for this notification type.", + "type": "string" + }, + "subscriptionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "timeStamp": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "objectInstanceId": { + "description": "This type represents the identifier to reference a managed object of a particular type. \n", + "type": "object", + "properties": { + "type": { + "description": "Indicates the type of managed object. Permitted values:\n - MANO_ENTITY\n - MANO_SERVICE\n - MANO_SERVICE_IF\n - CONSUMED_MANO_IF\n - MANO_ENTITY_COMPONENT\n\nThe \"MANO_ENTITY COMPONENT\" is only applicable if attribute \"manoEntityComponents\" in \"ManoEntity\" is supported by the API producer.\n", + "type": "string", + "enum": [ + "MANO_ENTITY", + "MANO_SERVICE", + "MANO_SERVICE_IF", + "CONSUMED_MANO_IF", + "MANO_ENTITY_COMPONENT" + ] + }, + "objectId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subObjectId": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + } }, - "objectInstanceId": { - "description": "This type represents the identifier to reference a managed object of a particular type. \n", - "type": "object", - "properties": { - "type": { - "description": "Indicates the type of managed object. Permitted values:\n - MANO_ENTITY\n - MANO_SERVICE\n - MANO_SERVICE_IF\n - CONSUMED_MANO_IF\n - MANO_ENTITY_COMPONENT\n\nThe \"MANO_ENTITY COMPONENT\" is only applicable if attribute \"manoEntityComponents\" in \"ManoEntity\" is supported by the API producer.\n", - "type": "string", - "enum": [ - "MANO_ENTITY", - "MANO_SERVICE", - "MANO_SERVICE_IF", - "CONSUMED_MANO_IF", - "MANO_ENTITY_COMPONENT" - ] - }, - "objectId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "subObjectId": { - "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", - "type": "string" + "required": ["type", "objectId"] + }, + "_links": { + "description": "Links to resources related to this notification.", + "type": "object", + "required": ["subscription", "logReports"], + "properties": { + "subscription": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": ["href"], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } } }, - "required": [ - "type", - "objectId" - ] - }, - "_links": { - "description": "Links to resources related to this notification.", - "type": "object", - "required": [ - "subscription", - "logReports" - ], - "properties": { - "subscription": { - "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } + "objectInstance": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": ["href"], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" } - }, - "objectInstance": { - "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } + } + }, + "LoggingJob": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": ["href"], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" } - }, - "LoggingJob": { + } + }, + "logReports": { + "description": "Link from which the available log report can be obtained. Due to the relationship of the logging job compilation and the logging information availability reporting, more than one logReport notification link can be provided.", + "type": "array", + "items": { "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", "type": "object", - "required": [ - "href" - ], + "required": ["href"], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", "type": "string" } } - }, - "logReports": { - "description": "Link from which the available log report can be obtained. Due to the relationship of the logging job compilation and the logging information availability reporting, more than one logReport notification link can be provided.", - "type": "array", - "items": { - "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - } } } } } - } \ No newline at end of file + } +} diff --git a/SOL009/NFVMANOLogManagement-API/schemas/LoggingJob.schema.json b/SOL009/NFVMANOLogManagement-API/schemas/LoggingJob.schema.json index d7dd8b5d52059d378fd7c296b9a7fe96d0b1c77c..5521b76ab9008222b398718d22e11e4439e79d8b 100644 --- a/SOL009/NFVMANOLogManagement-API/schemas/LoggingJob.schema.json +++ b/SOL009/NFVMANOLogManagement-API/schemas/LoggingJob.schema.json @@ -1,353 +1,297 @@ { - "description": "This type represents a logging job. It shall comply with the provisions defined in table 8.6.2.6-1.", - "type": "object", - "required": [ - "id", - "objectInstanceIds", - "jobCriteria", - "jobConfig", - "_links" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "objectInstanceIds": { - "description": "Identifiers of the object instance for which logging information is collected. This attribute shall contain the identifier of the instance of the object that is logged according to their type.", - "type": "array", - "items": { - "description": "This type represents the identifier to reference a managed object of a particular type. \n", - "type": "object", - "properties": { - "type": { - "description": "Indicates the type of managed object. Permitted values:\n - MANO_ENTITY\n - MANO_SERVICE\n - MANO_SERVICE_IF\n - CONSUMED_MANO_IF\n - MANO_ENTITY_COMPONENT\n\nThe \"MANO_ENTITY COMPONENT\" is only applicable if attribute \"manoEntityComponents\" in \"ManoEntity\" is supported by the API producer.\n", - "type": "string", - "enum": [ - "MANO_ENTITY", - "MANO_SERVICE", - "MANO_SERVICE_IF", - "CONSUMED_MANO_IF", - "MANO_ENTITY_COMPONENT" - ] - }, - "objectId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "subObjectId": { - "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", - "type": "string" - } - }, - "required": [ - "type", - "objectId" - ] - } - }, - "jobCriteria": { - "description": "This type represents collection criteria for logging jobs. It shall comply with the provisions defined in table 8.6.3.2-1.", + "description": "This type represents a logging job. It shall comply with the provisions defined in table 8.6.2.6-1.", + "type": "object", + "required": ["id", "objectInstanceIds", "jobCriteria", "jobConfig", "_links"], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "objectInstanceIds": { + "description": "Identifiers of the object instance for which logging information is collected. This attribute shall contain the identifier of the instance of the object that is logged according to their type.", + "type": "array", + "items": { + "description": "This type represents the identifier to reference a managed object of a particular type. \n", "type": "object", - "required": [ - "loggingType" - ], "properties": { - "loggingType": { - "description": "Type of logging. This defines the types of logged information to collect.\nPermitted values: - MESSAGES: logged NFV-MANO service interface messages. - SERVICES: logged messages about processes pertaining to NFV-MANO services. - SYSTEM: logged messages about the NFV-MANO functional entity’s system enabled by the provider.", + "type": { + "description": "Indicates the type of managed object. Permitted values:\n - MANO_ENTITY\n - MANO_SERVICE\n - MANO_SERVICE_IF\n - CONSUMED_MANO_IF\n - MANO_ENTITY_COMPONENT\n\nThe \"MANO_ENTITY COMPONENT\" is only applicable if attribute \"manoEntityComponents\" in \"ManoEntity\" is supported by the API producer.\n", "type": "string", "enum": [ - "MESSAGES", - "SERVICES", - "SYSTEM" + "MANO_ENTITY", + "MANO_SERVICE", + "MANO_SERVICE_IF", + "CONSUMED_MANO_IF", + "MANO_ENTITY_COMPONENT" ] }, - "messagesLogDetail": { - "description": "This type represents criteria for logging jobs to collect logged messages on NFV-MANO service interfaces. It shall comply with the provisions defined in table 8.6.3.3-1.", - "type": "object", - "required": [ - "direction" - ], - "properties": { - "direction": { - "description": "The direction of the interface messages to match.\nPermitted values: - IN: input messages into the interface. - OUT: output messages from the interface. - ALL: both input and output messages into/from the interface.", - "type": "string", - "enum": [ - "IN", - "OUT", - "ALL" - ] - }, - "matchingPatterns": { - "description": "Patterns to be matched in the interface message. If provided, only messages that match all the values provided in the sub-attributes shall be logged. An API consumer can provide more than one \"matchingPattern\" if combinations of patterns are to be considered to match diverse sets of interface messages.", - "type": "array", - "items": { - "type": "object", - "anyOf": [ - { - "required": [ - "srcIpAddress" - ] - }, - { - "required": [ - "dstIpAddress" - ] - }, - { - "required": [ - "requestMethod" - ] - }, - { - "required": [ - "requestUriPattern" - ] - }, - { - "required": [ - "responseCodes" - ] - } - ], - "properties": { - "srcIpAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "requestMethod": { - "description": "HTTP request method to be matched. To match, the HTTP request method of the message shall be the same as the value of this attribute. Valid values are specified in IETF RFC 7231. The API producer shall support this attribute.", - "type": "string" - }, - "requestUriPattern": { - "description": "Substring to be matched in the request URI. To match, the request URI shall include the value of\n this attribute as a substring. This is typically used to match messages which associate to RESTful\n resources, or to a specific API (e.g., by using the \"apiName\" of the API). The API producer shall\n support this attribute.", - "type": "string" - }, - "dstIpAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "responseCodes": { - "description": "HTTP response codes or patterns to match. A list of all valid HTTP response codes and their specification documents can be obtained from the HTTP status code registry. In addition, if supported, the following patterns may be used (case-insensitive): - \"1XX\": for matching any kind of informational response. - \"2XX\": for matching any kind of success response. - \"3XX\": for matching any kind redirection response. - \"4XX\": for matching any kind of client error response. - \"5XX\": for matching any kind of server error response.\nThe API producer shall support this attribute", - "type": "array", - "items": { - "type": "string" - } - }, - "headerField": { - "description": "Name of the header field to be matched. The header field name shall be one of the supported fields in a request message as defined in clause 4.2.2 of ETSI GS NFV-SOL 013 or in a response message as defined in clause 4.2.3 of ETSI GS NFV-SOL 013, in accordance with the \"direction\" criteria input. The API producer may support this attribute.", - "type": "string" - }, - "headerValue": { - "description": "Value in the header to be matched. To match, the value in the header field indicated by \"headerField\" shall be the same as in this attribute. Shall be provided if a \"headerField\" is provided. The API producer may support this attribute.", - "type": "string" - }, - "bodyValues": { - "description": "A list of strings to be matched in the body part of the interface message (e.g., the body of an HTTP message). If provided, only messages with text in the body part containing all the values from the list shall match the filter. In addition to a matching filter for the body of the message, a corresponding \"headerField\" filter shall also be provided, with \"headerField\" set to \"Content-Type\", to restrict matching to appropriate textual payloads such as \"application/json\" or \"text/plain\". The API producer may support this attribute", - "type": "string" - } - } - } - } - } - }, - "servicesLogDetail": { - "description": "This type represents criteria for logging jobs to collect logged messages about processes pertaining to NFV-MANO services. It shall comply with the provisions defined in table 8.6.3.4-1.", - "type": "object", - "properties": { - "logGarbageCollection": { - "description": "Indicates to collect logged information about garbage collection processes associated to NFV-MANO services.", - "type": "boolean" - } - } + "objectId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" }, - "systemLogDetail": { - "description": "This type represents criteria for logging jobs to collect logged system events of the NFV-MANO functional entity. It shall comply with the provisions defined in table 8.6.3.5-1.", - "type": "object", - "required": [ - "systemLogs", - "severityLevel" - ], - "properties": { - "systemLogs": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "severityLevelScheme": { - "description": "Identifies a severity level scheme. The default value is \"rfc5424\", which represents the set of values specified in the clause 6.2.1, table 2 of IETF RFC 5424. Other values may be used to signal different schemes.", - "type": "string" - }, - "severityLevel": { - "description": "The severity level, which determines the severity of the system messages to collect. The NFV-MANO functional entity shall collect system log messages, as indicated by the \"systemLogs\" attribute, with severity levels lower (i.e., more severe) or equal to the value provided by this present attribute.", - "type": "number" - } - } + "subObjectId": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" } - } - }, - "jobConfig": { - "description": "This type represents configuration data for a logging job. It shall comply with the provisions defined in table 8.6.3.6-1. NOTE: The present document version does not specify the support for \"log compilation and reporting based on events\" as specified in clause 6.6.2.2 of ETSI GS NFV-IFA 031.", - "type": "object", - "required": [ - "reportingCondition", - "securityConf" - ], - "properties": { - "startTime": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "endTime": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "reportingCondition": { - "description": "Specifies the condition under which the producer will report to the consumer about the compiled log data.", - "required": [ - "reportingType" - ], - "properties": { - "reportingType": { - "description": "Specifies the type of reporting condition. Permitted values: - REPORTING_ON_COMPILATION: the producer shall notify the consumer once the compilation of the\n collected logging data into a file is completed and a new log report is available.\n- NO_REPORTING: no reporting is requested (the consumer can query the logging jobs to know about the\n availability of new log reports).", - "type": "string", - "enum": [ - "REPORTING_ON_COMPILATION", - "NO_REPORTING" - ] - }, - "minimumReportingPeriod": { - "description": "Specifies the minimum periodicity at which the producer will report to the consumer about the collected log information, in seconds.", - "type": "integer", - "format": "int32" - } - } - }, - "compileBySizeValue": { - "description": "An indicative size threshold for compiling the collected log data, in bytes. It is used when the compilation is based on the size of the collected log data. If not present, a default value as specified with the \"defaultLogCompileBySizeValue\" configuration in the \"ManoEntityConfigurableParams\" shall be used", - "type": "integer", - "format": "int32" - }, - "compileByTimerValue": { - "description": "The periodicity threshold for compiling the filtered log, in seconds. It is used when the compilation is based on a timer (e.g., every 24 hours). If not present, a default value as specified with the \"defaultLogCompileByTimerValue\" configuration in the \"ManoEntityConfigurableParams\" shall be used", - "type": "integer", - "format": "int32" - }, - "securityConf": { - "description": "Configuration about the security aspects of the logging job.", - "type": "object", - "properties": { - "logFileEncryption": { - "description": "Information about the encryption of the compiled log files. Shall be present if the log file is requested to be encrypted.", - "required": [ - "encryptionCertificate", - "cipherAlgorithm" - ], + }, + "required": ["type", "objectId"] + } + }, + "jobCriteria": { + "description": "This type represents collection criteria for logging jobs. * NOTE:\tThe value of the loggingType has dependency on the object that is requested to be logged\n (refer to the CreateLoggingJobRequest): a) the logging of messages is only applicable to\n ManoServiceInterface and ConsumedManoInterface objects.", + "type": "object", + "required": ["loggingType"], + "properties": { + "loggingType": { + "description": "Type of logging. This defines the types of logged information to collect.\nPermitted values: - MESSAGES: logged NFV-MANO service interface messages. - SERVICES: logged messages about processes pertaining to NFV-MANO services. - SYSTEM: logged messages about the NFV-MANO functional entityΓÇÖs system enabled by the provider.\nSee note.", + "type": "string", + "enum": ["MESSAGES", "SERVICES", "SYSTEM"] + }, + "messagesLogDetail": { + "description": "This type represents criteria for logging jobs to collect logged messages on NFV-MANO service interfaces. * NOTE:\tIf a matching pattern is present, at least one of the \"srcIpAddress\", \"dstIpAddress\", \"requestMethod\",\n \"requestUriPattern\" or \"responseCodes\" shall be provided.", + "type": "object", + "required": ["direction"], + "properties": { + "direction": { + "description": "The direction of the interface messages to match.\nPermitted values: - IN: input messages into the interface. - OUT: output messages from the interface. - ALL: both input and output messages into/from the interface.", + "type": "string", + "enum": ["IN", "OUT", "ALL"] + }, + "matchingPatterns": { + "description": "Patterns to be matched in the interface message. If provided, only messages that match all the values provided in the sub-attributes shall be logged. An API consumer can provide more than one \"matchingPattern\" if combinations of patterns are to be considered to match diverse sets of interface messages. See note.", + "type": "array", + "items": { "type": "object", + "anyOf": [ + { + "required": ["srcIpAddress"] + }, + { + "required": ["dstIpAddress"] + }, + { + "required": ["requestMethod"] + }, + { + "required": ["requestUriPattern"] + }, + { + "required": ["responseCodes"] + } + ], "properties": { - "encryptionCertificate": { - "description": "X.509 certificate with the public key to use for the encryption of the compiled log file.", + "srcIpAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "requestMethod": { + "description": "HTTP request method to be matched. To match, the HTTP request method of the message shall be the same as the value of this attribute. Valid values are specified in IETF RFC 7231. The API producer shall support this attribute.", + "type": "string" + }, + "requestUriPattern": { + "description": "Substring to be matched in the request URI. To match, the request URI shall include the value of\n this attribute as a substring. This is typically used to match messages which associate to RESTful\n resources, or to a specific API (e.g., by using the \"apiName\" of the API). The API producer shall\n support this attribute.", "type": "string" }, - "cipherAlgorithm": { - "description": "Cryptographic algorithm to be used for the encryption of the compiled log file. More than one algorithm can be provided from higher (lower array index) to lower (higher array index) precedence. Valid values are: \"AES-CBC-128\", \"AES-GCM-128\", \"AES-CBC-256\", and \"AES-GCM-256\", as specified in clause 6.5 of ETSI GS NFV-SEC 012", + "dstIpAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "responseCodes": { + "description": "HTTP response codes or patterns to match. A list of all valid HTTP response codes and their specification documents can be obtained from the HTTP status code registry. In addition, if supported, the following patterns may be used (case-insensitive): - \"1XX\": for matching any kind of informational response. - \"2XX\": for matching any kind of success response. - \"3XX\": for matching any kind redirection response. - \"4XX\": for matching any kind of client error response. - \"5XX\": for matching any kind of server error response.\nThe API producer shall support this attribute", "type": "array", "items": { - "type": "string", - "minItems": 1 + "type": "string" } }, - "encryptAndSignOrder": { - "description": "Indication about the order in signing and encrypting the compiled log file. Valid values are: \"encryptFirst\", to apply the order \"first encrypt, then sign\", and \"signFirst\" for the order \"first sign, then encrypt\". Default value is \"encryptFirst\".", + "headerField": { + "description": "Name of the header field to be matched. The header field name shall be one of the supported fields in a request message as defined in clause 4.2.2 of ETSI GS NFV-SOL 013 or in a response message as defined in clause 4.2.3 of ETSI GS NFV-SOL 013, in accordance with the \"direction\" criteria input. The API producer may support this attribute.", "type": "string" - } - } - }, - "logTransferSecurity": { - "description": "Information about the security measures for retrieving/accessing the compiled log files.", - "type": "object", - "properties": { - "publicKey": { - "description": "The public key of the API consumer used for the client authentication with the file server. Shall be provided if required by the type of transfer protocol. May be omitted if the key has been provided to the API producer by other means, or if it has already been provided in some previous CreateLoggingJobRequest issued by the same API consumer, whose public key has not changed.", + }, + "headerValue": { + "description": "Value in the header to be matched. To match, the value in the header field indicated by \"headerField\" shall be the same as in this attribute. Shall be provided if a \"headerField\" is provided. The API producer may support this attribute.", + "type": "string" + }, + "bodyValues": { + "description": "A list of strings to be matched in the body part of the interface message (e.g., the body of an HTTP message). If provided, only messages with text in the body part containing all the values from the list shall match the filter. In addition to a matching filter for the body of the message, a corresponding \"headerField\" filter shall also be provided, with \"headerField\" set to \"Content-Type\", to restrict matching to appropriate textual payloads such as \"application/json\" or \"text/plain\". The API producer may support this attribute", "type": "string" } } } } } - } - }, - "logReports": { - "description": "Information about available log reports created by the logging job.", - "type": "array", - "items": { + }, + "servicesLogDetail": { + "description": "This type represents criteria for logging jobs to collect logged messages about processes pertaining to NFV-MANO services. * NOTE:\tIn the present version of the present document, only one attribute, i.e.\n \"logGarbageCollection\", is available.", + "type": "object", + "properties": { + "logGarbageCollection": { + "description": "Indicates to collect logged information about garbage collection processes associated to NFV-MANO services. See note.", + "type": "boolean" + } + } + }, + "systemLogDetail": { + "description": "This type represents criteria for logging jobs to collect logged system events of the NFV-MANO functional entity. * NOTE:\tThe set of properties and values for this attribute are assumed to be known to the consumer\n by means defined outside of the present document.", "type": "object", - "required": [ - "logReportId", - "logReportLoc" - ], + "required": ["systemLogs", "severityLevel"], "properties": { - "logReportId": { - "description": "An identifier with the intention of being globally unique.\n", + "systemLogs": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "severityLevelScheme": { + "description": "Identifies a severity level scheme. The default value is \"rfc5424\", which represents the set of values specified in the clause 6.2.1, table 2 of IETF RFC 5424. Other values may be used to signal different schemes.", "type": "string" }, - "logReportLoc": { - "description": "This type represents a link to a resource using an absolute URI.\n", + "severityLevel": { + "description": "The severity level, which determines the severity of the system messages to collect. The NFV-MANO functional entity shall collect system log messages, as indicated by the \"systemLogs\" attribute, with severity levels lower (i.e., more severe) or equal to the value provided by this present attribute.", + "type": "number" + } + } + } + } + }, + "jobConfig": { + "description": "This type represents configuration data for a logging job. It shall comply with the provisions defined in table 8.6.3.6-1. NOTE: The present document version does not specify the support for \"log compilation and reporting based on events\" as specified in clause 6.6.2.2 of ETSI GS NFV-IFA 031.\n* NOTE 1:\tThe minimumReportingPeriod is used to throttle possible flooding of reports by providing a lower\n limit on the gap between two log availability notification to be emitted by the same logging job.\n NOTE 2:\tMore than one logCompilingCondition is possible to provide a combination of different conditions\n for the compilation. This covers use cases when the compilation of the log can be based on, e.g.\n a timer value and a size value, whichever first condition is met first. For instance, compile a\n log every 3 600 seconds, or whenever during the 3 600 seconds period the log grows in\n size to 1 000 000 bytes.\n NOTE 3:\tThe value is indicative, as the actual size of the compiled log files might not match the provided\n compileBySizeValue due to possible deviations in the tracking of the size of the log data by the\n API producer, and the size of individual logged data entries when these are collected.", + "type": "object", + "required": ["reportingCondition", "securityConf"], + "properties": { + "startTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "endTime": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "reportingCondition": { + "description": "Specifies the condition under which the producer will report to the consumer about the compiled log data.", + "required": ["reportingType"], + "properties": { + "reportingType": { + "description": "Specifies the type of reporting condition. Permitted values: - REPORTING_ON_COMPILATION: the producer shall notify the consumer once the compilation of the\n collected logging data into a file is completed and a new log report is available.\n- NO_REPORTING: no reporting is requested (the consumer can query the logging jobs to know about the\n availability of new log reports).", + "type": "string", + "enum": ["REPORTING_ON_COMPILATION", "NO_REPORTING"] + }, + "minimumReportingPeriod": { + "description": "Specifies the minimum periodicity at which the producer will report to the consumer about the collected log information, in seconds. See note 1.", + "type": "integer", + "format": "int32" + } + } + }, + "compileBySizeValue": { + "description": "An indicative size threshold for compiling the collected log data, in bytes. It is used when the compilation is based on the size of the collected log data. If not present, a default value as specified with the \"defaultLogCompileBySizeValue\" configuration in the \"ManoEntityConfigurableParams\" shall be used. See note 2 and note 3.", + "type": "integer", + "format": "int32" + }, + "compileByTimerValue": { + "description": "The periodicity threshold for compiling the filtered log, in seconds. It is used when the compilation is based on a timer (e.g., every 24 hours). If not present, a default value as specified with the \"defaultLogCompileByTimerValue\" configuration in the \"ManoEntityConfigurableParams\" shall be used. See note 2.", + "type": "integer", + "format": "int32" + }, + "securityConf": { + "description": "Configuration about the security aspects of the logging job.", + "type": "object", + "properties": { + "logFileEncryption": { + "description": "Information about the encryption of the compiled log files. Shall be present if the log file is requested to be encrypted.", + "required": ["encryptionCertificate", "cipherAlgorithm"], "type": "object", - "required": [ - "href" - ], "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", + "encryptionCertificate": { + "description": "X.509 certificate with the public key to use for the encryption of the compiled log file.", + "type": "string" + }, + "cipherAlgorithm": { + "description": "Cryptographic algorithm to be used for the encryption of the compiled log file. More than one algorithm can be provided from higher (lower array index) to lower (higher array index) precedence. Valid values are: \"AES-CBC-128\", \"AES-GCM-128\", \"AES-CBC-256\", and \"AES-GCM-256\", as specified in clause 6.5 of ETSI GS NFV-SEC 012", + "type": "array", + "items": { + "type": "string", + "minItems": 1 + } + }, + "encryptAndSignOrder": { + "description": "Indication about the order in signing and encrypting the compiled log file. Valid values are: \"encryptFirst\", to apply the order \"first encrypt, then sign\", and \"signFirst\" for the order \"first sign, then encrypt\". Default value is \"encryptFirst\".", + "type": "string" + } + } + }, + "logTransferSecurity": { + "description": "Information about the security measures for retrieving/accessing the compiled log files.", + "type": "object", + "properties": { + "publicKey": { + "description": "The public key of the API consumer used for the client authentication with the file server. Shall be provided if required by the type of transfer protocol. May be omitted if the key has been provided to the API producer by other means, or if it has already been provided in some previous CreateLoggingJobRequest issued by the same API consumer, whose public key has not changed.", "type": "string" } } } } } - }, - "_links": { - "description": "Links for this resource.", + } + }, + "logReports": { + "description": "Information about available log reports created by the logging job.", + "type": "array", + "items": { "type": "object", - "required": [ - "self" - ], + "required": ["logReportId", "logReportLoc"], "properties": { - "self": { + "logReportId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "logReportLoc": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": [ - "href" - ], + "required": ["href"], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", "type": "string" } } - }, - "objects": { - "description": "Links to resources representing the object instances that are logged. Shall be present if the logged object instance information is accessible as a resource.", - "type": "array", - "items": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } + } + } + } + }, + "_links": { + "description": "Links for this resource.", + "type": "object", + "required": ["self"], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": ["href"], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "objects": { + "description": "Links to resources representing the object instances that are logged. Shall be present if the logged object instance information is accessible as a resource.", + "type": "array", + "items": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": ["href"], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" } } } } } } - } \ No newline at end of file + } +} diff --git a/SOL009/NFVMANOLogManagement-API/schemas/LoggingJobs.schema.json b/SOL009/NFVMANOLogManagement-API/schemas/LoggingJobs.schema.json index 92df600dc9b2160ffa996df5ca0e64b5a8f9ad98..86390e42be27dd351b012751e81b73d6337b82ba 100644 --- a/SOL009/NFVMANOLogManagement-API/schemas/LoggingJobs.schema.json +++ b/SOL009/NFVMANOLogManagement-API/schemas/LoggingJobs.schema.json @@ -42,74 +42,49 @@ "type": "string" } }, - "required": [ - "type", - "objectId" - ] + "required": ["type", "objectId"] } }, "jobCriteria": { - "description": "This type represents collection criteria for logging jobs. It shall comply with the provisions defined in table 8.6.3.2-1.", + "description": "This type represents collection criteria for logging jobs. * NOTE:\tThe value of the loggingType has dependency on the object that is requested to be logged\n (refer to the CreateLoggingJobRequest): a) the logging of messages is only applicable to\n ManoServiceInterface and ConsumedManoInterface objects.", "type": "object", - "required": [ - "loggingType" - ], + "required": ["loggingType"], "properties": { "loggingType": { - "description": "Type of logging. This defines the types of logged information to collect.\nPermitted values: - MESSAGES: logged NFV-MANO service interface messages. - SERVICES: logged messages about processes pertaining to NFV-MANO services. - SYSTEM: logged messages about the NFV-MANO functional entity’s system enabled by the provider.", + "description": "Type of logging. This defines the types of logged information to collect.\nPermitted values: - MESSAGES: logged NFV-MANO service interface messages. - SERVICES: logged messages about processes pertaining to NFV-MANO services. - SYSTEM: logged messages about the NFV-MANO functional entityΓÇÖs system enabled by the provider.\nSee note.", "type": "string", - "enum": [ - "MESSAGES", - "SERVICES", - "SYSTEM" - ] + "enum": ["MESSAGES", "SERVICES", "SYSTEM"] }, "messagesLogDetail": { - "description": "This type represents criteria for logging jobs to collect logged messages on NFV-MANO service interfaces. It shall comply with the provisions defined in table 8.6.3.3-1.", + "description": "This type represents criteria for logging jobs to collect logged messages on NFV-MANO service interfaces. * NOTE:\tIf a matching pattern is present, at least one of the \"srcIpAddress\", \"dstIpAddress\", \"requestMethod\",\n \"requestUriPattern\" or \"responseCodes\" shall be provided.", "type": "object", - "required": [ - "direction" - ], + "required": ["direction"], "properties": { "direction": { "description": "The direction of the interface messages to match.\nPermitted values: - IN: input messages into the interface. - OUT: output messages from the interface. - ALL: both input and output messages into/from the interface.", "type": "string", - "enum": [ - "IN", - "OUT", - "ALL" - ] + "enum": ["IN", "OUT", "ALL"] }, "matchingPatterns": { - "description": "Patterns to be matched in the interface message. If provided, only messages that match all the values provided in the sub-attributes shall be logged. An API consumer can provide more than one \"matchingPattern\" if combinations of patterns are to be considered to match diverse sets of interface messages.", + "description": "Patterns to be matched in the interface message. If provided, only messages that match all the values provided in the sub-attributes shall be logged. An API consumer can provide more than one \"matchingPattern\" if combinations of patterns are to be considered to match diverse sets of interface messages. See note.", "type": "array", "items": { "type": "object", "anyOf": [ { - "required": [ - "srcIpAddress" - ] + "required": ["srcIpAddress"] }, { - "required": [ - "dstIpAddress" - ] + "required": ["dstIpAddress"] }, { - "required": [ - "requestMethod" - ] + "required": ["requestMethod"] }, { - "required": [ - "requestUriPattern" - ] + "required": ["requestUriPattern"] }, { - "required": [ - "responseCodes" - ] + "required": ["responseCodes"] } ], "properties": { @@ -123,7 +98,7 @@ "type": "string" }, "requestUriPattern": { - "description": "Substring to be matched in the request URI. To match, the request URI shall include the value of\n this attribute as a substring. This is typically used to match messages which associate to RESTful\n resources, or to a specific API (e.g., by using the \"apiName\" of the API). The API producer shall\n support this attribute.", + "description": "Substring to be matched in the request URI. To match, the request URI shall include the value of\n this attribute as a substring. This is typically used to match messages which associate to RESTful\n resources, or to a specific API (e.g., by using the \"apiName\" of the API). The API producer shall\n support this attribute.", "type": "string" }, "dstIpAddress": { @@ -156,22 +131,19 @@ } }, "servicesLogDetail": { - "description": "This type represents criteria for logging jobs to collect logged messages about processes pertaining to NFV-MANO services. It shall comply with the provisions defined in table 8.6.3.4-1.", + "description": "This type represents criteria for logging jobs to collect logged messages about processes pertaining to NFV-MANO services. * NOTE:\tIn the present version of the present document, only one attribute, i.e.\n \"logGarbageCollection\", is available.", "type": "object", "properties": { "logGarbageCollection": { - "description": "Indicates to collect logged information about garbage collection processes associated to NFV-MANO services.", + "description": "Indicates to collect logged information about garbage collection processes associated to NFV-MANO services. See note.", "type": "boolean" } } }, "systemLogDetail": { - "description": "This type represents criteria for logging jobs to collect logged system events of the NFV-MANO functional entity. It shall comply with the provisions defined in table 8.6.3.5-1.", + "description": "This type represents criteria for logging jobs to collect logged system events of the NFV-MANO functional entity. * NOTE:\tThe set of properties and values for this attribute are assumed to be known to the consumer\n by means defined outside of the present document.", "type": "object", - "required": [ - "systemLogs", - "severityLevel" - ], + "required": ["systemLogs", "severityLevel"], "properties": { "systemLogs": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", @@ -190,12 +162,9 @@ } }, "jobConfig": { - "description": "This type represents configuration data for a logging job. It shall comply with the provisions defined in table 8.6.3.6-1. NOTE: The present document version does not specify the support for \"log compilation and reporting based on events\" as specified in clause 6.6.2.2 of ETSI GS NFV-IFA 031.", + "description": "This type represents configuration data for a logging job. It shall comply with the provisions defined in table 8.6.3.6-1. NOTE: The present document version does not specify the support for \"log compilation and reporting based on events\" as specified in clause 6.6.2.2 of ETSI GS NFV-IFA 031.\n* NOTE 1:\tThe minimumReportingPeriod is used to throttle possible flooding of reports by providing a lower\n limit on the gap between two log availability notification to be emitted by the same logging job.\n NOTE 2:\tMore than one logCompilingCondition is possible to provide a combination of different conditions\n for the compilation. This covers use cases when the compilation of the log can be based on, e.g.\n a timer value and a size value, whichever first condition is met first. For instance, compile a\n log every 3 600 seconds, or whenever during the 3 600 seconds period the log grows in\n size to 1 000 000 bytes.\n NOTE 3:\tThe value is indicative, as the actual size of the compiled log files might not match the provided\n compileBySizeValue due to possible deviations in the tracking of the size of the log data by the\n API producer, and the size of individual logged data entries when these are collected.", "type": "object", - "required": [ - "reportingCondition", - "securityConf" - ], + "required": ["reportingCondition", "securityConf"], "properties": { "startTime": { "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", @@ -209,32 +178,27 @@ }, "reportingCondition": { "description": "Specifies the condition under which the producer will report to the consumer about the compiled log data.", - "required": [ - "reportingType" - ], + "required": ["reportingType"], "properties": { "reportingType": { "description": "Specifies the type of reporting condition. Permitted values: - REPORTING_ON_COMPILATION: the producer shall notify the consumer once the compilation of the\n collected logging data into a file is completed and a new log report is available.\n- NO_REPORTING: no reporting is requested (the consumer can query the logging jobs to know about the\n availability of new log reports).", "type": "string", - "enum": [ - "REPORTING_ON_COMPILATION", - "NO_REPORTING" - ] + "enum": ["REPORTING_ON_COMPILATION", "NO_REPORTING"] }, "minimumReportingPeriod": { - "description": "Specifies the minimum periodicity at which the producer will report to the consumer about the collected log information, in seconds.", + "description": "Specifies the minimum periodicity at which the producer will report to the consumer about the collected log information, in seconds. See note 1.", "type": "integer", "format": "int32" } } }, "compileBySizeValue": { - "description": "An indicative size threshold for compiling the collected log data, in bytes. It is used when the compilation is based on the size of the collected log data. If not present, a default value as specified with the \"defaultLogCompileBySizeValue\" configuration in the \"ManoEntityConfigurableParams\" shall be used", + "description": "An indicative size threshold for compiling the collected log data, in bytes. It is used when the compilation is based on the size of the collected log data. If not present, a default value as specified with the \"defaultLogCompileBySizeValue\" configuration in the \"ManoEntityConfigurableParams\" shall be used. See note 2 and note 3.", "type": "integer", "format": "int32" }, "compileByTimerValue": { - "description": "The periodicity threshold for compiling the filtered log, in seconds. It is used when the compilation is based on a timer (e.g., every 24 hours). If not present, a default value as specified with the \"defaultLogCompileByTimerValue\" configuration in the \"ManoEntityConfigurableParams\" shall be used", + "description": "The periodicity threshold for compiling the filtered log, in seconds. It is used when the compilation is based on a timer (e.g., every 24 hours). If not present, a default value as specified with the \"defaultLogCompileByTimerValue\" configuration in the \"ManoEntityConfigurableParams\" shall be used. See note 2.", "type": "integer", "format": "int32" }, @@ -244,10 +208,7 @@ "properties": { "logFileEncryption": { "description": "Information about the encryption of the compiled log files. Shall be present if the log file is requested to be encrypted.", - "required": [ - "encryptionCertificate", - "cipherAlgorithm" - ], + "required": ["encryptionCertificate", "cipherAlgorithm"], "type": "object", "properties": { "encryptionCertificate": { @@ -287,10 +248,7 @@ "type": "array", "items": { "type": "object", - "required": [ - "logReportId", - "logReportLoc" - ], + "required": ["logReportId", "logReportLoc"], "properties": { "logReportId": { "description": "An identifier with the intention of being globally unique.\n", @@ -299,9 +257,7 @@ "logReportLoc": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": [ - "href" - ], + "required": ["href"], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -315,16 +271,12 @@ "_links": { "description": "Links for this resource.", "type": "object", - "required": [ - "self" - ], + "required": ["self"], "properties": { "self": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": [ - "href" - ], + "required": ["href"], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", @@ -338,9 +290,7 @@ "items": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": [ - "href" - ], + "required": ["href"], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n", diff --git a/SOL009/NFVMANOLogManagement-API/schemas/LogmSubscription.schema.json b/SOL009/NFVMANOLogManagement-API/schemas/LogmSubscription.schema.json index 607b69aeab60d303c33b5527fc5e5ad89bd5b509..0187d942b8b467f5be279964ba48579cbe7cac82 100644 --- a/SOL009/NFVMANOLogManagement-API/schemas/LogmSubscription.schema.json +++ b/SOL009/NFVMANOLogManagement-API/schemas/LogmSubscription.schema.json @@ -1,153 +1,153 @@ { - "description": "This type represents a subscription. It shall comply with the provisions defined in table 8.6.2.3-1.", - "type": "object", - "required": [ - "id", - "callbackUri", - "_links" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "filter": { - "description": "This type represents a filter that can be used to subscribe for notifications related to log management events. It shall comply with the provisions defined in table 8.6.3.7-1. At a particular nesting level in the filter structure, the following applies: All attributes shall match in order for the filter to match (logical \"and\" between different filter attributes). If an attribute is an array, the attribute shall match if at least one of the values in the array matches (logical \"or\" between the values of one filter attribute).", - "type": "object", - "properties": { - "objectInstanceFilter": { - "description": "This type represents subscription filter criteria to match NFV-MANO functional entities and their associated managed objects. It shall comply with the provisions defined in Table 4.3.2.2-1.", - "type": "object", - "anyOf": [ - { - "oneOf": [ - { - "required": [ - "manoServiceIds" - ] - }, - { - "required": [ - "manoServiceNames" - ] - } - ] - }, - { - "oneOf": [ - { - "required": [ - "manoServiceInterfaceIds" - ] - }, - { - "required": [ - "manoServiceInterfaceNames" - ] - } - ] - }, - { - "oneOf": [ - { - "required": [ - "consumedManoInterfaceIds" - ] - }, - { - "required": [ - "consumedManoInterfaceNames" - ] - } - ] - } - ], - "properties": { - "manoEntityId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "manoServiceIds": { - "description": "If present, match NFV-MANO services with an instance identifier listed in this attribute.", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", - "type": "string" - } - }, - "manoServiceNames": { - "description": "If present, match NFV-MANO services with an NFV-MANO service name listed in this attribute.", - "type": "array", - "items": { - "type": "string" - } - }, - "manoServiceInterfaceIds": { - "description": "If present, match NFV-MANO functional entity produced interfaces with an instance identifier listed in this attribute.", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", - "type": "string" - } - }, - "manoServiceInterfaceNames": { - "description": "If present, match NFV-MANO functional entity produced interfaces with an instance Name listed in this attribute.", - "type": "array", - "items": { - "type": "string" + "description": "This type represents a subscription. It shall comply with the provisions defined in table 8.6.2.3-1.", + "type": "object", + "required": [ + "id", + "callbackUri", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "filter": { + "description": "This type represents a filter that can be used to subscribe for notifications related to log management events. * NOTE:\tThe permitted values of the \"notificationTypes\" attribute are spelled exactly as the names\n of the notification types to facilitate automated code generation systems.", + "type": "object", + "properties": { + "objectInstanceFilter": { + "description": "This type represents subscription filter criteria to match NFV-MANO functional entities and their associated managed objects. It shall comply with the provisions defined in Table 4.3.2.2-1.", + "type": "object", + "anyOf": [ + { + "oneOf": [ + { + "required": [ + "manoServiceIds" + ] + }, + { + "required": [ + "manoServiceNames" + ] } - }, - "consumedManoInterfaceIds": { - "description": "If present, match NFV-MANO functional entity consumed interfaces with an instance identifier listed in this attribute.", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + ] + }, + { + "oneOf": [ + { + "required": [ + "manoServiceInterfaceIds" + ] + }, + { + "required": [ + "manoServiceInterfaceNames" + ] } - }, - "consumedManoInterfaceNames": { - "description": "If present, match NFV-MANO functional entity consumed interfaces with an instance Name listed in this attribute.", - "type": "array", - "items": { - "type": "string" + ] + }, + { + "oneOf": [ + { + "required": [ + "consumedManoInterfaceIds" + ] + }, + { + "required": [ + "consumedManoInterfaceNames" + ] } + ] + } + ], + "properties": { + "manoEntityId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "manoServiceIds": { + "description": "If present, match NFV-MANO services with an instance identifier listed in this attribute.", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + } + }, + "manoServiceNames": { + "description": "If present, match NFV-MANO services with an NFV-MANO service name listed in this attribute.", + "type": "array", + "items": { + "type": "string" + } + }, + "manoServiceInterfaceIds": { + "description": "If present, match NFV-MANO functional entity produced interfaces with an instance identifier listed in this attribute.", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a NFV-MANO functional entity, but that need not be globally unique. Representation: string of variable length..\n", + "type": "string" + } + }, + "manoServiceInterfaceNames": { + "description": "If present, match NFV-MANO functional entity produced interfaces with an instance Name listed in this attribute.", + "type": "array", + "items": { + "type": "string" + } + }, + "consumedManoInterfaceIds": { + "description": "If present, match NFV-MANO functional entity consumed interfaces with an instance identifier listed in this attribute.", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "consumedManoInterfaceNames": { + "description": "If present, match NFV-MANO functional entity consumed interfaces with an instance Name listed in this attribute.", + "type": "array", + "items": { + "type": "string" } } - }, - "notificationTypes": { - "description": "Match particular notification types. Permitted values: - LogReportAvailableNotification", - "type": "string", - "enum": [ - "LogReportAvailableNotification" - ] } + }, + "notificationTypes": { + "description": "Match particular notification types. Permitted values: - LogReportAvailableNotification See note.", + "type": "string", + "enum": [ + "LogReportAvailableNotification" + ] } - }, - "callbackUri": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - }, - "_links": { - "description": "Links to resources related to this resource.", - "type": "object", - "required": [ - "self" - ], - "properties": { - "self": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } + } + }, + "callbackUri": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + }, + "_links": { + "description": "Links to resources related to this resource.", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" } } } } } - } \ No newline at end of file + } +} \ No newline at end of file diff --git a/SOL009/NFVMANOLogManagement-API/schemas/LogmSubscriptions.schema.json b/SOL009/NFVMANOLogManagement-API/schemas/LogmSubscriptions.schema.json index 75c0daedd1b44e0cc764349415b0ae0f461bc293..578b00f70c2cbfcfa1601e97ae4e979fcc3dd268 100644 --- a/SOL009/NFVMANOLogManagement-API/schemas/LogmSubscriptions.schema.json +++ b/SOL009/NFVMANOLogManagement-API/schemas/LogmSubscriptions.schema.json @@ -1,19 +1,16 @@ -{ "type": "array", +{ + "type": "array", "items": { "description": "This type represents a subscription. It shall comply with the provisions defined in table 8.6.2.3-1.", "type": "object", - "required": [ - "id", - "callbackUri", - "_links" - ], + "required": ["id", "callbackUri", "_links"], "properties": { "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, "filter": { - "description": "This type represents a filter that can be used to subscribe for notifications related to log management events. It shall comply with the provisions defined in table 8.6.3.7-1. At a particular nesting level in the filter structure, the following applies: All attributes shall match in order for the filter to match (logical \"and\" between different filter attributes). If an attribute is an array, the attribute shall match if at least one of the values in the array matches (logical \"or\" between the values of one filter attribute).", + "description": "This type represents a filter that can be used to subscribe for notifications related to log management events. * NOTE:\tThe permitted values of the \"notificationTypes\" attribute are spelled exactly as the names\n of the notification types to facilitate automated code generation systems.", "type": "object", "properties": { "objectInstanceFilter": { @@ -23,42 +20,30 @@ { "oneOf": [ { - "required": [ - "manoServiceIds" - ] + "required": ["manoServiceIds"] }, { - "required": [ - "manoServiceNames" - ] + "required": ["manoServiceNames"] } ] }, { "oneOf": [ { - "required": [ - "manoServiceInterfaceIds" - ] + "required": ["manoServiceInterfaceIds"] }, { - "required": [ - "manoServiceInterfaceNames" - ] + "required": ["manoServiceInterfaceNames"] } ] }, { "oneOf": [ { - "required": [ - "consumedManoInterfaceIds" - ] + "required": ["consumedManoInterfaceIds"] }, { - "required": [ - "consumedManoInterfaceNames" - ] + "required": ["consumedManoInterfaceNames"] } ] } @@ -116,11 +101,9 @@ } }, "notificationTypes": { - "description": "Match particular notification types. Permitted values: - LogReportAvailableNotification", + "description": "Match particular notification types. Permitted values: - LogReportAvailableNotification See note.", "type": "string", - "enum": [ - "LogReportAvailableNotification" - ] + "enum": ["LogReportAvailableNotification"] } } }, @@ -131,16 +114,12 @@ "_links": { "description": "Links to resources related to this resource.", "type": "object", - "required": [ - "self" - ], + "required": ["self"], "properties": { "self": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", - "required": [ - "href" - ], + "required": ["href"], "properties": { "href": { "description": "String formatted according to IETF RFC 3986.\n",