From 0fe983019fecb79e58a53aa0a4c8787e78eb8fb1 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 5 Dec 2024 17:01:25 +0500 Subject: [PATCH 01/37] update SOL 002 version in test cases description from 4.5.1 to 5.1.1 --- .../CancelCoordinationActionTask.robot | 18 +++++++------- .../Coordinations.robot | 24 +++++++++---------- .../IndividualCoordinationAction.robot | 18 +++++++------- 3 files changed, 30 insertions(+), 30 deletions(-) diff --git a/SOL002/VNFLCMCoordination-API/CancelCoordinationActionTask.robot b/SOL002/VNFLCMCoordination-API/CancelCoordinationActionTask.robot index 1c316493..d80096e4 100644 --- a/SOL002/VNFLCMCoordination-API/CancelCoordinationActionTask.robot +++ b/SOL002/VNFLCMCoordination-API/CancelCoordinationActionTask.robot @@ -15,7 +15,7 @@ POST Cancellation of an Ongoing Individual Coordination Action ... Test title: POST Cancellation of an Ongoing Individual Coordination Action ... Test Objective: The objective is to test that POST request for cancellation of an ongoing individual coordination Action has accepted for processing. ... pre-condition: The status of the related LCM operation occurance is "PROCESSING" - ... Reference: Clause 10.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: When there is an Ongoing individual LCM operation coordination action. ... Post-Condition: none @@ -28,7 +28,7 @@ POST Cancellation of an Ongoing Individual Coordination Action - Conflict ... Test title: POST Cancellation of an Ongoing Individual Coordination Action - Conflict ... Test Objective: The objective is to test that POST request for cancellation of an ongoing individual coordination Action is not successfull due to a conflict with the state of the "Individual coordination action" resource. ... pre-condition: none - ... Reference: Clause 10.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: Processing of Individual Coordination Action has 'Finished'. ... Post-Condition: none @@ -41,7 +41,7 @@ Request a cancellation of an ongoing coordination action without authentication ... Test title: Request a cancellation of an ongoing coordination action without authentication ... Test objective: The objective is to test the failure of the request for a cancellation of a coordination task when no authentication is used ... Pre-conditions: none - ... Reference: Clause Clause 10.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause Clause 10.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Cancellation of an Ongoing Individual Coordination Action - Method not Imple ... Test title: GET Cancellation of an Ongoing Individual Coordination Action ... Test Objective: The objective is to test that GET method for cancellation of an ongoing individual coordination Action is not implemented. ... pre-condition: none - ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: ongoing individual coordination ... Post-Condition: none @@ -65,7 +65,7 @@ PUT Cancellation of an Ongoing Individual Coordination Action - Method not Imple ... Test title: PUT Cancellation of an Ongoing Individual Coordination Action ... Test Objective: The objective is to test that PUT method for cancellation of an ongoing individual coordination Action is not implemented. ... pre-condition: none - ... Reference: Clause 10.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Condition: none @@ -77,7 +77,7 @@ PATCH Cancellation of an Ongoing Individual Coordination Action - Method not Imp ... Test title: PATCH Cancellation of an Ongoing Individual Coordination Action ... Test Objective: The objective is to test that PATCH method for cancellation of an ongoing individual coordination Action is not implemented. ... pre-condition: none - ... Reference: Clause 10.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Condition: none @@ -89,7 +89,7 @@ DELETE Cancellation of an Ongoing Individual Coordination Action - Method not Im ... Test title: DELETE Cancellation of an Ongoing Individual Coordination Action ... Test Objective: The objective is to test that DELETE method for cancellation of an ongoing individual coordination Action is not implemented. ... pre-condition: none - ... Reference: Clause 10.4.4.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.4.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Condition: none @@ -100,7 +100,7 @@ POST Cancellation of an Ongoing Individual Coordination Action with permitted au ... Test title: POST Cancellation of an Ongoing Individual Coordination Action with permitted authorization scope ... Test Objective: The objective is to test that POST request for cancellation of an ongoing individual coordination Action has accepted for processing with permitted authorization scope. ... pre-condition: The status of the related LCM operation occurance is "PROCESSING" - ... Reference: Clause 10.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: When there is an Ongoing individual LCM operation coordination action. ... Post-Condition: none @@ -112,7 +112,7 @@ POST Cancellation of an Ongoing Individual Coordination Action with not permitte ... Test title: POST Cancellation of an Ongoing Individual Coordination Action with not permitted authorization scope ... Test Objective: The objective is to test that POST request for cancellation of an ongoing individual coordination Action has accepted for processing with not permitted authorization scope. ... pre-condition: The status of the related LCM operation occurance is "PROCESSING" - ... Reference: Clause 10.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: When there is an Ongoing individual LCM operation coordination action. ... Post-Condition: none diff --git a/SOL002/VNFLCMCoordination-API/Coordinations.robot b/SOL002/VNFLCMCoordination-API/Coordinations.robot index b0e266aa..2e74d439 100644 --- a/SOL002/VNFLCMCoordination-API/Coordinations.robot +++ b/SOL002/VNFLCMCoordination-API/Coordinations.robot @@ -15,7 +15,7 @@ POST Coordination of LCM Operation Occurance and API Producer has Chosen the Syn ... Test title: Post Coordination of an LCM operation occurrence ... Test Objective: The objective is to test the creation of new Individual Coordination Action, and perform a JSON schema validation of the returned LCM coordination data structure. ... pre-condition: LCM operation occurrence resource is in Processing state - ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: API producer has chosen the synchronous mode ... Post-Condition: none @@ -30,7 +30,7 @@ POST Coordination of LCM Operation Occurance and API Producer has Chosen the Asy ... Test title: Post Coordination of an LCM operation occurrence ... Test Objective: The objective is to test that the coordination of a LCM operation occurance request has been accepted for processing, and perform a JSON schema validation of the returned LCM coordination data structure. ... pre-condition: LCM operation occurrence resource is in Processing state - ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: API producer has chosen the asynchronous mode ... Post-Condition: none @@ -44,7 +44,7 @@ POST Coordination of a LCM Operation Occurance Forbidden ... Test title: Post Coordination of an LCM operation occurrence Forbidden ... Test Objective: The objective is to test the failure of a request for the coordination of an LCM operation occurrence ... pre-condition: The status of the related LCM opeation occurrence is "PROCESSING". The request is performed by a user that has not the grant to run this operation - ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Condition: none @@ -57,7 +57,7 @@ POST Coordination of LCM Operation Occurance Conflict ... Test title: Post Coordination of an LCM operation occurrence Conflict ... Test Objective: The objective is to verify that no coordination actions can be executed currently, due to a conflict with the state of the "Coordinations" resource. ... pre-condition: The status of the related LCM opeation occurrence is not "PROCESSING" - ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: When there are many coordination actions exist, or conflicting ones, are in progress. ... Post-Condition: none @@ -70,7 +70,7 @@ POST Coordination of LCM Operation Occurance Service Unavailable ... Test title: Post Coordination of an LCM operation occurrence Service Unavailable ... Test Objective: The objective is to test the request for the coordination of an LCM operation occurrence and the verify that the NFVO cannot perform immediately the request, but can perform it sometime in the future. ... pre-condition: The status of the related LCM opeation occurrence is "PROCESSING" but API producer cannot perform immediately the request - ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: API producer has chosen the synchronous mode ... Post-Condition: none @@ -84,7 +84,7 @@ POST Coordination of an LCM operation occurrence without authentication ... Test title: Request a Coordination of an LCM operation occurrence without authentication ... Test objective: The objective is to test the failure of the request for the coordination of an LCM operation occurrence without providing an authentication token ... Pre-conditions: The status of the related LCM opeation occurrence is "PROCESSING" - ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -96,7 +96,7 @@ GET Coordination of a LCM Operation Occurance - Method not implemented ... Test title: GET Coordination of a LCM Operation Occurance - Method not implemented ... Test Objective: The objective is to test that GET method for Resource Coordinations is not implemented. ... pre-condition: none - ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Condition: none @@ -108,7 +108,7 @@ PUT Coordination of a LCM Operation Occurance - Method not implemented ... Test title: PUT Coordination of a LCM Operation Occurance - Method not implemented ... Test Objective: The objective is to test that PUT method for Resource Coordinations is not implemented. ... pre-condition: none - ... Reference: Clause 10.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Condition: none @@ -120,7 +120,7 @@ PACTH Coordination of a LCM Operation Occurance - Method not implemented ... Test title: PATCH Coordination of a LCM Operation Occurance - Method not implemented ... Test Objective: The objective is to test that PATCH method for Resource Coordinations is not implemented. ... pre-condition: none - ... Reference: Clause 10.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Condition: none @@ -132,7 +132,7 @@ DELETE Coordination of a LCM Operation Occurance - Method not implemented ... Test title: DELETE Coordination of a LCM Operation Occurance - Method not implemented ... Test Objective: The objective is to test that DELETE method for Resource Coordinations is not implemented. ... pre-condition: none - ... Reference: Clause 10.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Condition: none @@ -143,7 +143,7 @@ POST Coordination of LCM Operation Occurance and API Producer has Chosen the Syn ... Test title: Post Coordination of an LCM operation occurrence with permitted authorization scope ... Test Objective: The objective is to test the creation of new Individual Coordination Action, and perform a JSON schema validation of the returned LCM coordination data structure with permitted authorization scope. ... pre-condition: LCM operation occurrence resource is in Processing state - ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: API producer has chosen the synchronous mode ... Post-Condition: none @@ -157,7 +157,7 @@ POST Coordination of LCM Operation Occurance and API Producer has Chosen the Syn ... Test title: Post Coordination of an LCM operation occurrence with not permitted authorization scope ... Test Objective: The objective is to test the creation of new Individual Coordination Action, and perform a JSON schema validation of the returned LCM coordination data structure with not permitted authorization scope. ... pre-condition: LCM operation occurrence resource is in Processing state - ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: API producer has chosen the synchronous mode ... Post-Condition: none diff --git a/SOL002/VNFLCMCoordination-API/IndividualCoordinationAction.robot b/SOL002/VNFLCMCoordination-API/IndividualCoordinationAction.robot index 72fe924d..e6945fff 100644 --- a/SOL002/VNFLCMCoordination-API/IndividualCoordinationAction.robot +++ b/SOL002/VNFLCMCoordination-API/IndividualCoordinationAction.robot @@ -14,7 +14,7 @@ POST Individual LCM Operation Coordination Results - Method not implemented ... Test title: POST Individual LCM Operation Coordination Results - Method not implemented ... Test Objective: The objective is to test that POST method for individual LCM operation coordination results is not implemented. ... pre-condition: none - ... Reference: Clause 10.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Condition: none @@ -26,7 +26,7 @@ GET Individual LCM Operation Coordination Results - Coordination is Finished ... Test title: GET Individual LCM Operation Coordination Results ... Test Objective: The objective is to test that coordination is finished and GET method reads individual LCM operation coordination results successfully, and perform a JSON schema validation of the returned LCM coordination data structure. ... pre-condition: LCM operation occurrence resource is in Processing state - ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: When the Individual LCM Operation Coordination is finished ... Post-Condition: none @@ -39,7 +39,7 @@ GET Individual LCM Operation Coordination Results - Coordination is Not Finished ... Test title: GET Individual LCM Operation Coordination Results ... Test Objective: The objective is to test that GET method checks that whether Individual LCM Operation Coordination is still ongoing or in the process of being cancelled. ... pre-condition: LCM operation occurrence resource is in Processing state - ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: When the Individual LCM Operation Coordination is still ongoing or in the process of being cancelled. ... Post-Condition: none @@ -52,7 +52,7 @@ Get Individual LCM Operation Coordination Results without authentication ... Test title: Get information about a finished coordination task without authentication ... Test objective: The objective is to try to read an individual coordination task without using authentication ... Pre-conditions: none - ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Individual LCM Operation Coordination Results - Method not implemented ... Test title: PUT Individual LCM Operation Coordination Results - Method not implemented ... Test Objective: The objective is to test that PUT method for individual LCM operation coordination results is not implemented. ... pre-condition: none - ... Reference: Clause 10.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Condition: none @@ -76,7 +76,7 @@ PATCH Individual LCM Operation Coordination Results - Method not implemented ... Test title: PATCH Individual LCM Operation Coordination Results - Method not implemented ... Test Objective: The objective is to test that PATCH method for individual LCM operation coordination results is not implemented. ... pre-condition: none - ... Reference: Clause 10.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Condition: none @@ -88,7 +88,7 @@ DELETE Individual LCM Operation Coordination Results - Method not implemented ... Test title: PUT Individual LCM Operation Coordination Results - Method not implemented ... Test Objective: The objective is to test that DELETE method for individual LCM operation coordination results is not implemented. ... pre-condition: none - ... Reference: Clause 10.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Condition: none @@ -99,7 +99,7 @@ GET Individual LCM Operation Coordination Results - Coordination is Finished wit ... Test title: GET Individual LCM Operation Coordination Results - Coordination is Finished with permitted authorization scope ... Test Objective: The objective is to test that coordination is finished and GET method reads individual LCM operation coordination results successfully, and perform a JSON schema validation of the returned LCM coordination data structure with permitted authorization scope. ... pre-condition: LCM operation occurrence resource is in Processing state - ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: When the Individual LCM Operation Coordination is finished ... Post-Condition: none @@ -111,7 +111,7 @@ GET Individual LCM Operation Coordination Results - Coordination is Finished wit ... Test title: GET Individual LCM Operation Coordination Results - Coordination is Finished with not permitted authorization scope ... Test Objective: The objective is to test that coordination is finished and GET method reads individual LCM operation coordination results successfully, and perform a JSON schema validation of the returned LCM coordination data structure with not permitted authorization scope. ... pre-condition: LCM operation occurrence resource is in Processing state - ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 10.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: When the Individual LCM Operation Coordination is finished ... Post-Condition: none -- GitLab From bf927591478ad02fb7231f4941a965205c2e84b2 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 5 Dec 2024 16:51:31 +0500 Subject: [PATCH 02/37] update SOL 002 version in test cases description from 4.5.1 to 5.1.1 --- .../IndividualSubscription.robot | 18 +++++------ .../IndividualVNFindicator.robot | 28 ++++++++--------- .../NotificationEndpoint.robot | 14 ++++----- SOL002/VNFIndicator-API/Notifications.robot | 4 +-- SOL002/VNFIndicator-API/Subscriptions.robot | 30 +++++++++---------- SOL002/VNFIndicator-API/VNFIndicators.robot | 30 +++++++++---------- .../VnfIndicatorsInVnfInstanceId.robot | 24 +++++++-------- 7 files changed, 74 insertions(+), 74 deletions(-) diff --git a/SOL002/VNFIndicator-API/IndividualSubscription.robot b/SOL002/VNFIndicator-API/IndividualSubscription.robot index 2f82d44e..7f67726c 100644 --- a/SOL002/VNFIndicator-API/IndividualSubscription.robot +++ b/SOL002/VNFIndicator-API/IndividualSubscription.robot @@ -11,7 +11,7 @@ GET Individual VNF Indicator Subscription ... Test title: Get individual subscription to VNF performance indicators ... Test objective: The objective is to test the retrieval of individual VNF performance indicator subscription and perform a JSON schema validation of the returned subscription data structure ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -24,7 +24,7 @@ GET Individual VNF Indicator Subscription with invalid resource identifier ... Test title: Get individual subscription to VNF performance indicators ... Test objective: The objective is to test that the retrieval of individual VNF performance indicator subscription fails when using an invalid resource identifier. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -37,7 +37,7 @@ DELETE Individual VNF Indicator Subscription ... Test title: Delete individual subscription to VNF performance indicators ... Test objective: The objective is to test the deletion of an individual VNF performance indicator subscription. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: clause 8.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: clause 8.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: The subscription to VNF performance indicators is deleted @@ -50,7 +50,7 @@ DELETE Individual VNF Indicator Subscription with invalid resource identifier ... Test title: Delete individual subscription to VNF performance indicators ... Test objective: The objective is to test that the deletion of an individual VNF performance indicator subscription fails when using an invalid resource identifier. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: clause 8.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: clause 8.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -63,7 +63,7 @@ PUT Individual VNF Indicator Subscription - Method not implemented ... Test title: PUT individual VNF indicator subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify an individual VNF performance indicator subscription ... Pre-conditions: none - ... Reference: Clause 8.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -75,7 +75,7 @@ PATCH Individual VNF Indicator Subscription - Method not implemented ... Test title: PUT individual VNF indicator subscription - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update an individual VNF performance indicator subscription ... Pre-conditions: none - ... Reference: Clause 8.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -87,7 +87,7 @@ POST Individual VNF Indicator Subscription - Method not implemented ... Test title: PUT individual VNF indicator subscription - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify an individual VNF performance indicator subscription ... Pre-conditions: none - ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -98,7 +98,7 @@ GET Individual VNF Indicator Subscription with permitted authorization scope ... Test title: Get individual subscription to VNF performance indicators with permitted authorization scope ... Test objective: The objective is to test the retrieval of individual VNF performance indicator subscription and perform a JSON schema validation of the returned subscription data structure with permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -110,7 +110,7 @@ GET Individual VNF Indicator Subscription with NOT permitted authorization scope ... Test title: Get individual subscription to VNF performance indicators with NOT permitted authorization scope ... Test objective: The objective is to test the retrieval of individual VNF performance indicator subscription and perform a JSON schema validation of the returned subscription data structure with NOT permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none diff --git a/SOL002/VNFIndicator-API/IndividualVNFindicator.robot b/SOL002/VNFIndicator-API/IndividualVNFindicator.robot index 7bebc51f..dbcf58e6 100644 --- a/SOL002/VNFIndicator-API/IndividualVNFindicator.robot +++ b/SOL002/VNFIndicator-API/IndividualVNFindicator.robot @@ -10,7 +10,7 @@ Get Individual Indicator for VNF Instance ... Test title: Get individual performance indicator for a VNF instance ... Test objective: The objective is to test the retrieval of a performance indicator for a given VNF instance and perform a JSON schema validation of the returned indicator data structure ... Pre-conditions: A VNF instance is instantiated. At least one measure of performance indicator is available for the given VNF instance. - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -25,7 +25,7 @@ Get Individual Indicator for VNF Instance with invalid indicator identifier ... Test title: Get individual performance indicator for a VNF instance with invalid indicator identifier ... Test objective: The objective is to test that the retrieval of a performance indicator for a given VNF instance fails when using an invalid resource identifier. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. At least one measure of performance indicator is available for the given VNF instance. - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -38,7 +38,7 @@ POST Individual VNF Indicator - Method not implemented ... Test title: POST individual performance indicator for VNF instance - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new performance indicator for a VNF instance ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -50,7 +50,7 @@ PUT Individual VNF Indicator - Method not implemented ... Test title: PUT individual performance indicator for VNF instance - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify an existing performance indicator for a VNF instance ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -62,7 +62,7 @@ PATCH Individual VNF Indicator - Method not implemented ... Test title: PATCH individual performance indicator for VNF instance - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update an existing performance indicator for a VNF instance ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -74,7 +74,7 @@ DELETE Individual VNF Indicator - Method not implemented ... Test title: DELETE individual performance indicator indicators for VNF instance - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing performance indicator for a VNF instance ... Pre-conditions: none - ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -86,7 +86,7 @@ Get Individual Performance Indicator ... Test title: Get Individual Performance Indicator ... Test objective: The objective is to test the retrieval of a performance indicator and perform a JSON schema validation of the returned indicator data structure ... Pre-conditions: At least one measure of performance indicator is available.. - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -100,7 +100,7 @@ Get Individual Performance Indicator with invalid indicator identifier ... Test title: Get Individual Performance Indicator with invalid indicator identifier ... Test objective: The objective is to test that the retrieval of a performance indicator fails when using an invalid resource identifier. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: At least one measure of performance indicator is available. - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -113,7 +113,7 @@ POST Individual Performance Indicator - Method not implemented ... Test title: POST Individual Performance Indicator - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new performance indicator. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -125,7 +125,7 @@ PUT Individual Performance Indicator - Method not implemented ... Test title: PUT Individual Performance Indicator - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify an existing performance indicator. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -137,7 +137,7 @@ PATCH Individual Performance Indicator - Method not implemented ... Test title: PATCH Individual Performance Indicator - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update an existing performance indicator. ... Pre-conditions: none - ... Reference: Clause 8.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -149,7 +149,7 @@ DELETE Individual Performance Indicator - Method not implemented ... Test title: DELETE Individual Performance Indicator - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing performance indicator. ... Pre-conditions: none - ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -160,7 +160,7 @@ Get Individual Indicator for VNF Instance with permitted authorization scope ... Test title: Get individual performance indicator for a VNF instance with permitted authorization scope ... Test objective: The objective is to test the retrieval of a performance indicator for a given VNF instance and perform a JSON schema validation of the returned indicator data structure with permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. At least one measure of performance indicator is available for the given VNF instance. - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -174,7 +174,7 @@ Get Individual Indicator for VNF Instance with NOT permitted authorization scope ... Test title: Get individual performance indicator for a VNF instance with NOT permitted authorization scope ... Test objective: The objective is to test the retrieval of a performance indicator for a given VNF instance and perform a JSON schema validation of the returned indicator data structure with NOT permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. At least one measure of performance indicator is available for the given VNF instance. - ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none diff --git a/SOL002/VNFIndicator-API/NotificationEndpoint.robot b/SOL002/VNFIndicator-API/NotificationEndpoint.robot index 6eb13de5..e3e228ce 100644 --- a/SOL002/VNFIndicator-API/NotificationEndpoint.robot +++ b/SOL002/VNFIndicator-API/NotificationEndpoint.robot @@ -12,7 +12,7 @@ VNF Indicator Value Change Notification ... Test title: VNF Indicator Value Change Notification ... Test objective: The objective is to test that the POST request triggers VNF Indicator Value Change Notification . ... Pre-conditions: A VNF is instantiated, and a subscription for indicator value change notifications is available in the VNF. - ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ Supported Indicators Change Notification ... Test title: Supported Indicators Change Notification ... Test objective: The objective is to test that the POST request triggers Supported Indicators Change Notification . ... Pre-conditions: A VNF is instantiated, and a subscription for supported indicators change notifications is available in the VNF. - ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ Test the Notification Endpoint - Successful ... Test title: Test the Notification Endpoint - Successful ... Test objective: The objective is to test the Notification Endpoint provided by the notification consumer. ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. - ... Reference: Clause 8.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ Test the Notification Endpoint - NOT FOUND ... Test title: Test the Notification Endpoint - UNREACHABLE ... Test objective: The objective is to test the Notification Endpoint provided by the notification consumer. ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. - ... Reference: Clause 8.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: The notification endpoint is unreachable by the API producer. ... Post-Conditions: none @@ -61,7 +61,7 @@ PUT Notification endpoint - Method Not Implemented ... Test title: PUT Notification endpoint - Method Not Implemented ... Test objective: The objective is to test the PUT method for Notification Endpoint provided by the consumer is not implemented. ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. - ... Reference: Clause 8.4.7.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.7.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -73,7 +73,7 @@ PATCH Notification endpoint - Method Not Implemented ... Test title: PATCH Notification endpoint - Method Not Implemented ... Test objective: The objective is to test the PATCH method for Notification Endpoint provided by the consumer is not implemented. ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. - ... Reference: Clause 8.4.7.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.7.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -85,7 +85,7 @@ DELETE Notification endpoint - Method Not Implemented ... Test title: DELETE Notification endpoint - Method Not Implemented ... Test objective: The objective is to test the DELETE method for Notification Endpoint provided by the consumer is not implemented. ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. - ... Reference: Clause 8.4.7.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.7.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFIndicator-API/Notifications.robot b/SOL002/VNFIndicator-API/Notifications.robot index 337f4009..584225b9 100644 --- a/SOL002/VNFIndicator-API/Notifications.robot +++ b/SOL002/VNFIndicator-API/Notifications.robot @@ -16,7 +16,7 @@ VNF Indicator Value Change Notification ... Test title: VNF Indicator Value Change Notification ... Test objective: The objective is to test the dispatch of VNF Indicator Value Change Notification when new indicator values are available in the VNF, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF is instantiated, and a subscription for indicator value change notifications is available in the VNF. - ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNF ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ Supported Indicators Change Notification ... Test title: Supported Indicators Change Notification ... Test objective: The objective is to test the dispatch of Supported Indicators Change Notification when new indicator values are available in the VNF, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF is instantiated, and a subscription for supported indicators change notifications is available in the VNF. - ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNF ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFIndicator-API/Subscriptions.robot b/SOL002/VNFIndicator-API/Subscriptions.robot index 5ae4c24a..61bd84b7 100644 --- a/SOL002/VNFIndicator-API/Subscriptions.robot +++ b/SOL002/VNFIndicator-API/Subscriptions.robot @@ -17,7 +17,7 @@ GET VNF Indicators Subscriptions ... Test title: GET VNF Indicators Subscriptions ... Test objective: The objective is to test the retrieval of all VNF indicators subscriptions and perform a JSON schema validation of the returned subscriptions data structure ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators ... Post-Conditions: none @@ -30,7 +30,7 @@ GET VNF Indicators Subscriptions with attribute-based filter ... Test title: GET VNF Indicators Subscriptions with attribute-based filter ... Test objective: The objective is to test the retrieval of all VNF indicators subscriptions using attribute-based filter and perform a JSON schema and content validation of the returned subscriptions data structure ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators ... Post-Conditions: none @@ -44,7 +44,7 @@ GET VNF Indicators Subscriptions with invalid attribute-based filter ... Test title: GET VNF Indicators Subscriptions with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of all VNF indicators subscriptions fails when using invalid attribute-based filter. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators ... Post-Conditions: none @@ -57,7 +57,7 @@ GET VNF Indicators Subscriptions with invalid resource endpoint ... Test title: GET VNF Indicators Subscriptions with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of all VNF indicators subscriptions fails when using invalid resource endpoint. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators. ... Post-Conditions: none @@ -70,7 +70,7 @@ Create new VNF indicator subscription ... Test title: Create new VNF indicator subscription ... Test objective: The objective is to test the creation of a new VNF indicator subscription perform a JSON schema and content validation of the returned subscriptions data structure ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators. ... Post-Conditions: The VNF indicator subscription is successfully set and it matches the issued subscription @@ -85,7 +85,7 @@ PUT VNF Indicator Subscriptions - Method not implemented ... Test title: PUT VNF Indicator Subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF indicator subscriptions ... Pre-conditions: none - ... Reference: Clause 8.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators. ... Post-Conditions: none @@ -97,7 +97,7 @@ PATCH VNF Indicator Subscriptions - Method not implemented ... Test title: PATCH VNF Indicator Subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update VNF indicator subscriptions ... Pre-conditions: none - ... Reference: Clause 8.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators. ... Post-Conditions: none @@ -109,7 +109,7 @@ DELETE VNF Indicator Subscriptions - Method not implemented ... Test title: DELETE VNF Indicator Subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete VNF indicator subscriptions ... Pre-conditions: none - ... Reference: Clause 8.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators. ... Post-Conditions: none @@ -121,7 +121,7 @@ GET VNF Indicators Subscriptions to get Paged Response ... Test title: GET VNF Indicators Subscriptions to get Paged Response ... Test objective: The objective is to test the retrieval of all VNF indicators subscriptions to get Paged Response. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators ... Post-Conditions: none @@ -134,7 +134,7 @@ GET VNF Indicators Subscriptions - Bad Request Response too Big ... Test title: GET VNF Indicators Subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of all VNF indicators subscriptions fails because response is too big. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators ... Post-Conditions: none @@ -147,7 +147,7 @@ POST Create a new Subscription - Unprocessable Content ... Test title: POST Create a new Subscription - Unprocessable Content ... Test objective: The objective is to test that content type of the message content is supported and the message content of a request contains syntactically correct data but the data cannot be processed. ... Pre-conditions: none - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -160,7 +160,7 @@ Create new VNF indicator Subscription - DUPLICATION ... Test title: POST Create a new subscription - DUPLICATION ... Test objective: The POST method creates a new subscription even if an existing subscription to same content exist ... Pre-conditions: none - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: SUT should support duplication of subscription creation ... Post-Conditions: In response header Location shall not be null @@ -174,7 +174,7 @@ Create new VNF indicator Subscription - NO-DUPLICATION ... Test title: POST Create a new subscription - NO-DUPLICATION ... Test objective: The POST method creates a new subscription even if an existing subscription to same content exist ... Pre-conditions: none - ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: SUT should not support duplication of subscription creation ... Post-Conditions: In response header Location shall not be null @@ -186,7 +186,7 @@ GET VNF Indicators Subscriptions with permitted authorization scope ... Test title: GET VNF Indicators Subscriptions with permitted authorization scope ... Test objective: The objective is to test the retrieval of all VNF indicators subscriptions and perform a JSON schema validation of the returned subscriptions data structure with permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators ... Post-Conditions: none @@ -198,7 +198,7 @@ GET VNF Indicators Subscriptions with NOT permitted authorization scope ... Test title: GET VNF Indicators Subscriptions with not permitted authorization scope ... Test objective: The objective is to test the retrieval of all VNF indicators subscriptions and perform a JSON schema validation of the returned subscriptions data structure with not permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. At least one VNF indicator subscription is available in the VNF. - ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of indicators ... Post-Conditions: none diff --git a/SOL002/VNFIndicator-API/VNFIndicators.robot b/SOL002/VNFIndicator-API/VNFIndicators.robot index a3e6e5ca..78385d4d 100644 --- a/SOL002/VNFIndicator-API/VNFIndicators.robot +++ b/SOL002/VNFIndicator-API/VNFIndicators.robot @@ -13,7 +13,7 @@ Get all VNF Indicators ... Test title: Get all VNF Indicators ... Test objective: The objective is to test the retrieval of all the available VNF indicators and perform a JSON schema validation of the collected indicators data structure ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -26,7 +26,7 @@ Get VNF Indicators with attribute-based filter ... Test title: Get VNF Indicators with attribute-based filter ... Test objective: The objective is to test the retrieval of VNF indicators using attribute-based filter, perform a JSON schema validation of the collected indicators data structure, and verify that the retrieved information matches the issued attribute-based filters ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -40,7 +40,7 @@ Get VNF Indicators with invalid attribute-based filter ... Test title: Get VNF Indicators with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of VNF indicators fails when using invalid attribute-based filters, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -53,7 +53,7 @@ Get all VNF Indicators with malformed authorization token ... Test title: GET all VNF Indicators with malformed authrization token. ... Test objective: The objective is to test that the retrieval of VNF indicators fails when using malformed authorization token ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 4.5.3.3, 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 4.5.3.3, 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. The VNF requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -66,7 +66,7 @@ Get all VNF Indicators without authorization token ... Test title: GET all VNF Indicators without authorization token ... Test objective: The objective is to test that the retrieval of VNF indicators fails when omitting the authorization token ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 4.5.3.3, 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 4.5.3.3, 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. The VNF requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -79,7 +79,7 @@ GET all VNF Indicators with expired or revoked authorization token ... Test title: GET all VNF Indicators with expired or revoked authorization token ... Test objective: The objective is to test that the retrieval of VNF indicators fails when using expired or revoked authorization token ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 4.5.3.3, 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 4.5.3.3, 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. The VNF requires the usage of access tokens for authorizing the API requests. ... Post-Conditions: none @@ -92,7 +92,7 @@ Get all VNF Indicators with invalid resource endpoint ... Test title: GET all VNF Indicators with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of VNF indicators fails when using invalid resource endpoint ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -105,7 +105,7 @@ POST all VNF Indicators - Method not implemented ... Test title: POST all VNF Indicators - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new VNF indicators ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -117,7 +117,7 @@ PUT all VNF Indicators - Method not implemented ... Test title: PUT all VNF Indicators - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF indicators ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -129,7 +129,7 @@ PATCH all VNF Indicators - Method not implemented ... Test title: PATCH all VNF Indicators - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update VNF indicators ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -141,7 +141,7 @@ DELETE all VNF Indicators - Method not implemented ... Test title: DELETE all VNF Indicators - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete VNF indicators ... Pre-conditions: none - ... Reference: Clause 8.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -153,7 +153,7 @@ Get VNF Indicators to get Paged Response ... Test title: Get VNF Indicators to get Paged Response ... Test objective: The objective is to test the retrieval of all the available VNF indicators with Paged Response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -166,7 +166,7 @@ Get VNF Indicators - Bad Request Response too Big ... Test title: Get VNF Indicators - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of VNF indicators fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -178,7 +178,7 @@ Get all VNF Indicators with permitted authorization scope ... Test title: Get all VNF Indicators with permitted authorization scope ... Test objective: The objective is to test the retrieval of all the available VNF indicators and perform a JSON schema validation of the collected indicators data structure with permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -190,7 +190,7 @@ Get all VNF Indicators with not permitted authorization scope ... Test title: Get all VNF Indicators with not permitted authorization scope ... Test objective: The objective is to test the retrieval of all the available VNF indicators and perform a JSON schema validation of the collected indicators data structure with not permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. One or more measures of VNF performance indicators are available in the VNF. - ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none diff --git a/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot b/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot index 4dd13a9d..7332a2b5 100644 --- a/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot +++ b/SOL002/VNFIndicator-API/VnfIndicatorsInVnfInstanceId.robot @@ -13,7 +13,7 @@ Get Indicators for VNF Instance ... Test title: Get all performance indicators for a VNF instance ... Test objective: The objective is to test the retrieval of all performance indicators for a given VNF instance and perform a JSON schema validation of the returned indicators data structure ... Pre-conditions: A VNF instance is instantiated. One or more measures of performance indicators are available for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -27,7 +27,7 @@ GET Indicators for VNF Instance with attribute-based filter ... Test title: Get all performance indicators for a VNF instance with attribute-based filter ... Test objective: The objective is to test the retrieval of all performance indicators for a given VNF instance using attribute-based filter and perform a JSON schema validation of the returned indicators data structure ... Pre-conditions: A VNF instance is instantiated. One or more measures of performance indicators are available for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -41,7 +41,7 @@ Get Indicators for VNF Instance with invalid attribute-based filter ... Test title: Get all performance indicators for a VNF instance with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of all performance indicators for a given VNF instance fails using invalid attribute-based filter. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of performance indicators are available for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -54,7 +54,7 @@ Get Indicators for VNF Instance with invalid resource identifier ... Test title: Get all performance indicators for a VNF instance with invalid resource identifier ... Test objective: The objective is to test that the retrieval of all performance indicators for a given VNF instance fails when using invalid resource identifier. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of performance indicators are available for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -67,7 +67,7 @@ POST Indicators for VNF instance - Method not implemented ... Test title: POST performance indicators for VNF instance - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create new performance indicators for a VNF instance ... Pre-conditions: none - ... Reference: Clause 8.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -79,7 +79,7 @@ PUT Indicators for VNF instance - Method not implemented ... Test title: PUT performance indicators for VNF instance - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify existing performance indicators for a VNF instance ... Pre-conditions: none - ... Reference: Clause 8.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -91,7 +91,7 @@ PATCH Indicators for VNF instance - Method not implemented ... Test title: PATCH performance indicators for VNF instance - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update existing performance indicators for a VNF instance ... Pre-conditions: none - ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -103,7 +103,7 @@ DELETE Indicators for VNF instance - Method not implemented ... Test title: DELETE performance indicators for VNF instance - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete performance indicators for a VNF instance ... Pre-conditions: none - ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -115,7 +115,7 @@ Get Indicators for VNF Instance to get Paged Response ... Test title: Get Indicators for VNF Instance to get Paged Response ... Test objective: The objective is to test the retrieval of all performance indicators for a given VNF instance to get paged response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of performance indicators are available for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -128,7 +128,7 @@ Get Indicators for VNF Instance - Bad Request Response too Big ... Test title: Get Indicators for VNF Instance - Bad Request Response too Big ... Test objective: The objective is to test that the retrieval of all performance indicators for a given VNF instance fails when response is too big. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. One or more measures of performance indicators are available for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators. ... Post-Conditions: none @@ -140,7 +140,7 @@ Get Indicators for VNF Instance with permitted authorization scope ... Test title: Get all performance indicators for a VNF instance with permitted authorization scope ... Test objective: The objective is to test the retrieval of all performance indicators for a given VNF instance and perform a JSON schema validation of the returned indicators data structure with permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. One or more measures of performance indicators are available for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none @@ -153,7 +153,7 @@ Get Indicators for VNF Instance with NOT permitted authorization scope ... Test title: Get all performance indicators for a VNF instance with not permitted authorization scope ... Test objective: The objective is to test the retrieval of all performance indicators for a given VNF instance and perform a JSON schema validation of the returned indicators data structure with not permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. One or more measures of performance indicators are available for the given VNF instance. - ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 8.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation and maintenance of performance indicators ... Post-Conditions: none -- GitLab From dbddffb8d29055657e33455668ebaae77075d776 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 6 Dec 2024 10:26:07 +0500 Subject: [PATCH 03/37] update test cases of VNFIndicator-API as per SOL 002 version 5.1.1 --- SOL002/VNFIndicator-API/schemas/vnfIndicator.schema.json | 8 ++++++++ SOL002/VNFIndicator-API/schemas/vnfIndicators.schema.json | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/SOL002/VNFIndicator-API/schemas/vnfIndicator.schema.json b/SOL002/VNFIndicator-API/schemas/vnfIndicator.schema.json index 209ea767..424aa504 100644 --- a/SOL002/VNFIndicator-API/schemas/vnfIndicator.schema.json +++ b/SOL002/VNFIndicator-API/schemas/vnfIndicator.schema.json @@ -24,6 +24,14 @@ "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, + "vnfcInstanceIds": { + "description": "The vnfcInstanceIds attribute is optionally present. If present, it contains the list of identifiers of VNFC instances which provide the indicator value(s).\n", + "type": "array", + "items": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + } + }, "_links": { "description": "Links for this resource.\n", "type": "object", diff --git a/SOL002/VNFIndicator-API/schemas/vnfIndicators.schema.json b/SOL002/VNFIndicator-API/schemas/vnfIndicators.schema.json index 686df172..7b7b2440 100644 --- a/SOL002/VNFIndicator-API/schemas/vnfIndicators.schema.json +++ b/SOL002/VNFIndicator-API/schemas/vnfIndicators.schema.json @@ -26,6 +26,14 @@ "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, + "vnfcInstanceIds": { + "description": "The vnfcInstanceIds attribute is optionally present. If present, it contains the list of identifiers of VNFC instances which provide the indicator value(s).\n", + "type": "array", + "items": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + } + }, "_links": { "description": "Links for this resource.\n", "type": "object", -- GitLab From eba7e1add2d8fcd57caaae959fd11a3f6aeb9a6f Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 6 Dec 2024 10:29:50 +0500 Subject: [PATCH 04/37] editorial change: Reformatted schemas --- .../schemas/ApiVersionInformation.schema.json | 64 ++-- .../schemas/ProblemDetails.schema.json | 33 +- .../VnfIndicatorSubscriptions.schema.json | 280 +++++++-------- ...dicatorValueChangeNotification.schema.json | 320 +++++++++--------- .../schemas/vnfIndicators.schema.json | 118 +++---- 5 files changed, 423 insertions(+), 392 deletions(-) diff --git a/SOL002/VNFIndicator-API/schemas/ApiVersionInformation.schema.json b/SOL002/VNFIndicator-API/schemas/ApiVersionInformation.schema.json index a7964119..b3582ea4 100644 --- a/SOL002/VNFIndicator-API/schemas/ApiVersionInformation.schema.json +++ b/SOL002/VNFIndicator-API/schemas/ApiVersionInformation.schema.json @@ -1,36 +1,36 @@ { - "description": "This type represents API version information.\n", - "type": "object", - "required": [ - "uriPrefix", - "apiVersions" - ], - "properties": { - "uriPrefix": { - "description": "Specifies the URI prefix for the API, in the following form {apiRoot}/{apiName}/{apiMajorVersion}/.\n", - "type": "string" - }, - "apiVersions": { - "description": "Version(s) supported for the API signaled by the uriPrefix attribute.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "version" - ], - "properties": { - "version": { - "description": "Identifies a supported version. The value of the version attribute shall be a version identifier as specified in clause 9.1 (SOL013).\n", - "type": "string" - }, - "isDeprecated": { - "description": "If such information is available, this attribute indicates whether use of the version signaled by the version attribute is deprecated (true) or not (false).\nA deprecated version is still supported by the API producer but is recommended not to be used any longer. When a version is no longer supported, it does not appear in the response body.\n", - "type": "boolean" - }, - "retirementDate": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" + "description": "This type represents API version information.\n", + "type": "object", + "required": [ + "uriPrefix", + "apiVersions" + ], + "properties": { + "uriPrefix": { + "description": "Specifies the URI prefix for the API, in the following form {apiRoot}/{apiName}/{apiMajorVersion}/.\n", + "type": "string" + }, + "apiVersions": { + "description": "Version(s) supported for the API signaled by the uriPrefix attribute.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "version" + ], + "properties": { + "version": { + "description": "Identifies a supported version. The value of the version attribute shall be a version identifier as specified in clause 9.1 (SOL013).\n", + "type": "string" + }, + "isDeprecated": { + "description": "If such information is available, this attribute indicates whether use of the version signaled by the version attribute is deprecated (true) or not (false).\nA deprecated version is still supported by the API producer but is recommended not to be used any longer. When a version is no longer supported, it does not appear in the response body.\n", + "type": "boolean" + }, + "retirementDate": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" } } } diff --git a/SOL002/VNFIndicator-API/schemas/ProblemDetails.schema.json b/SOL002/VNFIndicator-API/schemas/ProblemDetails.schema.json index 2af3ef9b..5dd62437 100644 --- a/SOL002/VNFIndicator-API/schemas/ProblemDetails.schema.json +++ b/SOL002/VNFIndicator-API/schemas/ProblemDetails.schema.json @@ -1 +1,32 @@ -{ "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", "type": "object", "required": [ "status", "detail" ], "properties": { "type": { "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", "type": "string", "format": "URI" }, "title": { "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", "type": "string" }, "status": { "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", "type": "integer" }, "detail": { "description": "A human-readable explanation specific to this occurrence of the problem.\n", "type": "string" }, "instance": { "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", "type": "string", "format": "URI" } }} \ No newline at end of file +{ + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n", + "type": "object", + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" + }, + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" + }, + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" + }, + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" + }, + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" + } + } +} \ No newline at end of file diff --git a/SOL002/VNFIndicator-API/schemas/VnfIndicatorSubscriptions.schema.json b/SOL002/VNFIndicator-API/schemas/VnfIndicatorSubscriptions.schema.json index 1c074e6d..425fe040 100644 --- a/SOL002/VNFIndicator-API/schemas/VnfIndicatorSubscriptions.schema.json +++ b/SOL002/VNFIndicator-API/schemas/VnfIndicatorSubscriptions.schema.json @@ -1,111 +1,109 @@ { - "type": "array", - "items": { - "description": "This type represents a subscription related to notifications about VNF indicator value changes.\n", + "type": "array", + "items": { + "description": "This type represents a subscription related to notifications about VNF indicator value changes.\n", + "type": "object", + "required": [ + "id", + "callbackUri", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "filter": { + "description": "This type represents a subscription filter for notifications related to VNF indicators.\nAt 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).\nNOTE:\tThe permitted values of the \"notificationTypes\" attribute are spelled exactly as the names \n of the notification types to facilitate automated code generation systems.\n", "type": "object", - "required": [ - "id", - "callbackUri", - "_links" - ], "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "filter": { - "description": "This type represents a subscription filter for notifications related to VNF indicators.\nAt 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).\nNOTE:\tThe permitted values of the \"notificationTypes\" attribute are spelled exactly as the names \n of the notification types to facilitate automated code generation systems.\n", + "vnfInstanceSubscriptionFilter": { + "description": "This type represents subscription filter criteria to match VNF instances. * NOTE 1:\tThe attributes \"vnfdIds\" and \"vnfProductsFromProviders\" are alternatives to reference to VNF instances\n that are based on certain VNFDs in a filter. They should not be used both in the same filter instance,\n but one alternative should be chosen.\n NOTE 2:\tThe attributes \"vnfInstanceIds\" and \"vnfInstanceNames\" are alternatives to reference to particular VNF\n instances in a filter. They should not be used both in the same filter instance, but one alternative\n should be chosen.\n", "type": "object", - "properties": { - "vnfInstanceSubscriptionFilter": { - "description": "This type represents subscription filter criteria to match VNF instances. * NOTE 1:\tThe attributes \"vnfdIds\" and \"vnfProductsFromProviders\" are alternatives to reference to VNF instances\n that are based on certain VNFDs in a filter. They should not be used both in the same filter instance,\n but one alternative should be chosen.\n NOTE 2:\tThe attributes \"vnfInstanceIds\" and \"vnfInstanceNames\" are alternatives to reference to particular VNF\n instances in a filter. They should not be used both in the same filter instance, but one alternative\n should be chosen.\n", - "type": "object", - "anyOf": [ + "anyOf": [ + { + "oneOf": [ { - "oneOf": [ - { - "required": [ - "vnfdId" - ] - }, - { - "required": [ - "vnfProductsFromProviders" - ] - } + "required": [ + "vnfdId" ] }, { - "oneOf": [ - { - "required": [ - "vnfInstanceIds" - ] - }, - { - "required": [ - "vnfInstanceNames" - ] - } + "required": [ + "vnfProductsFromProviders" ] } - ], - "properties": { - "vnfdIds": { - "description": "If present, match VNF instances that were created based on a VNFD identified by one of the vnfdId values listed in this attribute. See note 1.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } + ] + }, + { + "oneOf": [ + { + "required": [ + "vnfInstanceIds" + ] }, - "vnfProductsFromProviders": { - "description": "If present, match VNF instances that belong to VNF products from certain providers. See note 1.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "vnfProvider" - ], - "properties": { - "vnfProvider": { - "description": "Name of the VNF provider to match.\n", - "type": "string" - }, - "vnfProducts": { - "description": "If present, match VNF instances that belong to VNF products with certain product names, from one particular provider.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "vnfProductName" - ], - "properties": { - "vnfProductName": { - "description": "Name of the VNF product to match.\n", - "type": "string" - }, - "versions": { - "description": "If present, match VNF instances that belong to VNF products with certain versions and a certain product name, from one particular provider.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "vnfSoftwareVersion" - ], - "properties": { - "vnfSoftwareVersion": { - "description": "A version.\n", - "type": "string" - }, - "vnfdVersions": { - "description": "If present, match VNF instances that belong to VNF products with certain VNFD versions, a certain software version and a certain product name, from one particular provider.\n", - "type": "array", - "items": { - "description": "A version.\n", - "type": "string" - } - } + { + "required": [ + "vnfInstanceNames" + ] + } + ] + } + ], + "properties": { + "vnfdIds": { + "description": "If present, match VNF instances that were created based on a VNFD identified by one of the vnfdId values listed in this attribute. See note 1.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "vnfProductsFromProviders": { + "description": "If present, match VNF instances that belong to VNF products from certain providers. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "vnfProvider" + ], + "properties": { + "vnfProvider": { + "description": "Name of the VNF provider to match.\n", + "type": "string" + }, + "vnfProducts": { + "description": "If present, match VNF instances that belong to VNF products with certain product names, from one particular provider.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "vnfProductName" + ], + "properties": { + "vnfProductName": { + "description": "Name of the VNF product to match.\n", + "type": "string" + }, + "versions": { + "description": "If present, match VNF instances that belong to VNF products with certain versions and a certain product name, from one particular provider.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "vnfSoftwareVersion" + ], + "properties": { + "vnfSoftwareVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfdVersions": { + "description": "If present, match VNF instances that belong to VNF products with certain VNFD versions, a certain software version and a certain product name, from one particular provider.\n", + "type": "array", + "items": { + "description": "A version.\n", + "type": "string" } } } @@ -114,69 +112,71 @@ } } } - }, - "vnfInstanceIds": { - "description": "If present, match VNF instances with an instance identifier listed in this attribute. See note 2.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "vnfInstanceNames": { - "description": "If present, match VNF instances with a VNF Instance Name listed in this attribute. See note 2.\n", - "type": "array", - "items": { - "type": "string" - } } } }, - "notificationTypes": { - "description": "Match particular notification types. \nPermitted values: -\tVnfIndicatorValueChangeNotification -\tSupportedIndicatorsChangeNotification See note.\n", - "type": "string", - "enum": [ - "VnfIndicatorValueChangeNotification", - "SupportedIndicatorsChangeNotification" - ] + "vnfInstanceIds": { + "description": "If present, match VNF instances with an instance identifier listed in this attribute. See note 2.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } }, - "indicatorIds": { - "description": "Match particular VNF indicator identifiers.\n", + "vnfInstanceNames": { + "description": "If present, match VNF instances with a VNF Instance Name listed in this attribute. See note 2.\n", "type": "array", "items": { - "description": "An identifier that is unique within a VNF descriptor.\n", "type": "string" } } } }, - "callbackUri": { - "description": "The URI of the endpoint to send the notification to.\n", + "notificationTypes": { + "description": "Match particular notification types. \nPermitted values: -\tVnfIndicatorValueChangeNotification -\tSupportedIndicatorsChangeNotification See note.\n", "type": "string", - "format": "url" + "enum": [ + "VnfIndicatorValueChangeNotification", + "SupportedIndicatorsChangeNotification" + ] }, - "_links": { - "description": "Links for this resource.\n", + "indicatorIds": { + "description": "Match particular VNF indicator identifiers.\n", + "type": "array", + "items": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + } + } + } + }, + "callbackUri": { + "description": "The URI of the endpoint to send the notification to.\n", + "type": "string", + "format": "url" + }, + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", "required": [ - "self" + "href" ], "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" - } - } + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" } } } } } + } + } } \ No newline at end of file diff --git a/SOL002/VNFIndicator-API/schemas/VnfIndicatorValueChangeNotification.schema.json b/SOL002/VNFIndicator-API/schemas/VnfIndicatorValueChangeNotification.schema.json index 7a33be24..f8a4f1e1 100644 --- a/SOL002/VNFIndicator-API/schemas/VnfIndicatorValueChangeNotification.schema.json +++ b/SOL002/VNFIndicator-API/schemas/VnfIndicatorValueChangeNotification.schema.json @@ -1,176 +1,176 @@ { "VnfIndicatorValueChangeNotification": { - "description": "This type represents a VNF indicator value change notification. * NOTE:\tETSI GS NFV-SOL 001 specifies the structure and\n format of the VNFD based on TOSCA specifications.\n", - "type": "object", - "required": [ - "id", - "notificationType", - "subscriptionId", - "timeStamp", - "vnfIndicatorId", - "value", - "vnfInstanceId", - "_links" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "notificationType": { - "description": "Discriminator for the different notification types. Shall be set to \"VnfIndicatorValueChangeNotification\" for this notification type.\n", - "type": "string" - }, - "subscriptionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "timeStamp": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "vnfIndicatorId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "name": { - "description": "Human readable name of the VNF indicator. Shall be present if defined in the VNFD.\n", - "type": "string" - }, - "value": { - "description": "Provides the value of the VNF indicator. The value format is defined in the VNFD. See note.\n", - "type": "object" - }, - "vnfInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "_links": { - "description": "Links to resources related to this resource.\n", - "type": "object", - "required": [ - "vnfInstance", - "subscription" - ], - "properties": { - "vnfInstance": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } + "description": "This type represents a VNF indicator value change notification. * NOTE:\tETSI GS NFV-SOL 001 specifies the structure and\n format of the VNFD based on TOSCA specifications.\n", + "type": "object", + "required": [ + "id", + "notificationType", + "subscriptionId", + "timeStamp", + "vnfIndicatorId", + "value", + "vnfInstanceId", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "notificationType": { + "description": "Discriminator for the different notification types. Shall be set to \"VnfIndicatorValueChangeNotification\" for this notification type.\n", + "type": "string" + }, + "subscriptionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "timeStamp": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "vnfIndicatorId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "name": { + "description": "Human readable name of the VNF indicator. Shall be present if defined in the VNFD.\n", + "type": "string" }, - "subscription": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" + "value": { + "description": "Provides the value of the VNF indicator. The value format is defined in the VNFD. See note.\n", + "type": "object" + }, + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "_links": { + "description": "Links to resources related to this resource.\n", + "type": "object", + "required": [ + "vnfInstance", + "subscription" + ], + "properties": { + "vnfInstance": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "subscription": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } } - } } - } } - } }, "SupportedIndicatorsChangeNotification": { - "description": "This type represents a notification to inform the receiver that the set of indicators\nsupported by a VNF instance has changed.\n* NOTE:\tETSI GS NFV-SOL 001 specifies the structure and\n format of the VNFD based on TOSCA specifications.\n", - "type": "object", - "required": [ - "id", - "notificationType", - "subscriptionId", - "timeStamp", - "vnfInstanceId" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "notificationType": { - "description": "Discriminator for the different notification types. Shall be set to \"SupportedIndicatorsChangeNotification\"\nfor this notification type.\n", - "type": "string" - }, - "subscriptionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "timeStamp": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "vnfInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "supportedIndicators": { - "description": "Set of VNF indicators supported by the VNF instance.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "vnfIndicatorId" - ], - "properties": { - "vnfIndicatorId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "description": "This type represents a notification to inform the receiver that the set of indicators\nsupported by a VNF instance has changed.\n* NOTE:\tETSI GS NFV-SOL 001 specifies the structure and\n format of the VNFD based on TOSCA specifications.\n", + "type": "object", + "required": [ + "id", + "notificationType", + "subscriptionId", + "timeStamp", + "vnfInstanceId" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "name": { - "description": "Human readable name of the VNF indicator. Shall be present if defined in the VNFD.\nSee note.\n", + }, + "notificationType": { + "description": "Discriminator for the different notification types. Shall be set to \"SupportedIndicatorsChangeNotification\"\nfor this notification type.\n", "type": "string" - } - } - } - }, - "_links": { - "description": "Links for this resource.\n", - "type": "object", - "required": [ - "subscription" - ], - "properties": { - "vnfInstance": { - "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" + }, + "subscriptionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "timeStamp": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "supportedIndicators": { + "description": "Set of VNF indicators supported by the VNF instance.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "vnfIndicatorId" + ], + "properties": { + "vnfIndicatorId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "name": { + "description": "Human readable name of the VNF indicator. Shall be present if defined in the VNFD.\nSee note.\n", + "type": "string" + } + } } - } }, - "subscription": { - "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" + "_links": { + "description": "Links for this resource.\n", + "type": "object", + "required": [ + "subscription" + ], + "properties": { + "vnfInstance": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "subscription": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } } - } } - } } - } } - } \ No newline at end of file +} \ No newline at end of file diff --git a/SOL002/VNFIndicator-API/schemas/vnfIndicators.schema.json b/SOL002/VNFIndicator-API/schemas/vnfIndicators.schema.json index 7b7b2440..e0f0ab01 100644 --- a/SOL002/VNFIndicator-API/schemas/vnfIndicators.schema.json +++ b/SOL002/VNFIndicator-API/schemas/vnfIndicators.schema.json @@ -1,75 +1,75 @@ { - "type": "array", - "items": { - "description": "This type represents a VNF indicator value.\nNOTE:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications.\n", + "type": "array", + "items": { + "description": "This type represents a VNF indicator value.\nNOTE:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications.\n", + "type": "object", + "required": [ + "id", + "value", + "vnfInstanceId", + "_links" + ], + "properties": { + "id": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "name": { + "description": "Human readable name of the indicator. Shall be present if defined in the VNFD.\n", + "type": "string" + }, + "value": { + "description": "Provides the value of the indicator. The value format is defined in the VNFD. See note.\n", + "type": "object" + }, + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfcInstanceIds": { + "description": "The vnfcInstanceIds attribute is optionally present. If present, it contains the list of identifiers of VNFC instances which provide the indicator value(s).\n", + "type": "array", + "items": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + } + }, + "_links": { + "description": "Links for this resource.\n", "type": "object", "required": [ - "id", - "value", - "vnfInstanceId", - "_links" + "self", + "vnfInstance" ], "properties": { - "id": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "name": { - "description": "Human readable name of the indicator. Shall be present if defined in the VNFD.\n", - "type": "string" - }, - "value": { - "description": "Provides the value of the indicator. The value format is defined in the VNFD. See note.\n", - "type": "object" - }, - "vnfInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } }, - "vnfcInstanceIds": { - "description": "The vnfcInstanceIds attribute is optionally present. If present, it contains the list of identifiers of VNFC instances which provide the indicator value(s).\n", - "type": "array", - "items": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - } - }, - "_links": { - "description": "Links for this resource.\n", + "vnfInstance": { + "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", "required": [ - "self", - "vnfInstance" + "href" ], "properties": { - "self": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "vnfInstance": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" } } } } } + } + } } \ No newline at end of file -- GitLab From 9119a00d6cafd6bda2a4388a8dbbebda47557a3d Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 6 Dec 2024 16:14:57 +0500 Subject: [PATCH 05/37] add header check for Location as per SOL002 specifications --- SOL002/VNFIndicator-API/Subscriptions.robot | 3 +++ 1 file changed, 3 insertions(+) diff --git a/SOL002/VNFIndicator-API/Subscriptions.robot b/SOL002/VNFIndicator-API/Subscriptions.robot index 61bd84b7..47662285 100644 --- a/SOL002/VNFIndicator-API/Subscriptions.robot +++ b/SOL002/VNFIndicator-API/Subscriptions.robot @@ -76,6 +76,7 @@ Create new VNF indicator subscription ... Post-Conditions: The VNF indicator subscription is successfully set and it matches the issued subscription Send Post Request for VNF Indicator Subscription Check HTTP Response Status Code Is 201 + Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is VnfIndicatorSubscription Check HTTP Response Body Matches the Subscription Check Postcondition VNF Indicator Subscription Is Set @@ -166,6 +167,7 @@ Create new VNF indicator Subscription - DUPLICATION ... Post-Conditions: In response header Location shall not be null Post Create subscription - DUPLICATION Check HTTP Response Status Code Is 201 + Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is VnfIndicatorSubscription Check Operation Occurrence Id @@ -180,6 +182,7 @@ Create new VNF indicator Subscription - NO-DUPLICATION ... Post-Conditions: In response header Location shall not be null Post Create subscription - NO-DUPLICATION Check HTTP Response Status Code Is 303 + Check HTTP Response Header Contains Location Check Operation Occurrence Id GET VNF Indicators Subscriptions with permitted authorization scope [Documentation] Test ID: 6.3.2.4.14 -- GitLab From b6075ac174a33c12f1b7fe729573c698e279d43e Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Tue, 17 Dec 2024 11:52:08 +0500 Subject: [PATCH 06/37] update api version in variable.txt --- SOL002/VNFIndicator-API/environment/variables.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOL002/VNFIndicator-API/environment/variables.txt b/SOL002/VNFIndicator-API/environment/variables.txt index 7692af75..1b75d73d 100644 --- a/SOL002/VNFIndicator-API/environment/variables.txt +++ b/SOL002/VNFIndicator-API/environment/variables.txt @@ -50,7 +50,7 @@ ${INDICATORS_EM_SCOPE}= vnfind_by_em:v1:indicators ${SUBSCRIPTIONS_EM_SCOPE}= vnfind_by_em:v1:subscriptions ${OAUTH_Encryption_ALGORITHM}= HS256 ${NEG_SCOPE}= vnfind_by_vnf:v2:invalid -${API_VERSION}= 1.12.0 +${API_VERSION}= 1.13.0 ${erroneousVnfInstanceId} erroneousVnfInstanceId ${POS_FIELDS} name=vnfIndicator -- GitLab From dd644d3ddccd8b0431ecc518fba85455308911be Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 5 Dec 2024 17:08:47 +0500 Subject: [PATCH 07/37] update SOL 002 version in test cases description from 4.5.1 to 5.1.1 --- .../CancelOperationTask.robot | 18 +++++----- .../ChangeCurrentVNFPackageTask.robot | 16 ++++----- .../ChangeExternalVNFConnectivityTask.robot | 16 ++++----- .../ChangeVNFFlavourTask.robot | 18 +++++----- .../CreateVNFSnapshotTask.robot | 20 +++++------ .../FailOperationTask.robot | 18 +++++----- .../HealVNFTask.robot | 18 +++++----- .../IndividualSubscription.robot | 14 ++++---- .../IndividualVNFInstance.robot | 20 +++++------ .../IndividualVNFSnapshot.robot | 18 +++++----- .../IndividualVnfLcmOperationOccurence.robot | 14 ++++---- .../InstantiateVNFTask.robot | 20 +++++------ .../NotificationEndpoint.robot | 6 ++-- .../Notifications.robot | 8 ++--- .../OperateVNFTask.robot | 18 +++++----- .../RetryOperationTask.robot | 18 +++++----- .../RevertToVNFSnapshotTask.robot | 18 +++++----- .../RollbackOperationTask.robot | 18 +++++----- .../ScaleVNFTask.robot | 18 +++++----- .../ScaleVNFToLevelTask.robot | 18 +++++----- .../Subscriptions.robot | 36 +++++++++---------- .../TerminateVNFTask.robot | 16 ++++----- .../VNFInstances.robot | 30 ++++++++-------- .../VNFSelectDeployableModules.robot | 14 ++++---- .../VNFSnapshots.robot | 32 ++++++++--------- .../VnfLcmOperationOccurences.robot | 32 ++++++++--------- 26 files changed, 246 insertions(+), 246 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot b/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot index e4fe77cf..996087f6 100644 --- a/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot +++ b/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot @@ -14,7 +14,7 @@ Post Cancel operation task ... Test title: POST Cancel operation task ... Test objective: The POST method initiates cancelling an ongoing VNF lifecycle operation while it is being executed or rolled back, i.e. the "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. ... Pre-conditions: the "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. - ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: the resource is in FAILED_TEMP state @@ -27,7 +27,7 @@ Post Cancel operation task Conflict ... Test title: POST Cancel operation task Conflict ... Test objective: The POST method is NOT cancelling an ongoing VNF lifecycle operation due to the fact that the VNF instance resource is not in STARTING, PROCESSING or ROLLING_BACK state ... Pre-conditions: operation is not in STARTING, PROCESSING or ROLLING_BACK state - ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ Post Cancel operation task Not Found ... Test title: POST Cancel operation task ... Test objective: The objective is to test that POST method cannot cancel a VNF lifecycle operation because the resource is not found ... Pre-conditions: - ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ GET Cancel operation task - Method not implemented ... Test title: GET Cancel operation task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.17.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -66,7 +66,7 @@ PUT Cancel operation task - Method not implemented ... Test title: PUT Cancel operation task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.17.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -78,7 +78,7 @@ PATCH Cancel operation task - Method not implemented ... Test title: PATCH Cancel operation task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.17.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -90,7 +90,7 @@ DELETE Cancel operation task - Method not implemented ... Test title: DELETE Cancel operation task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.17.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.17.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -101,7 +101,7 @@ Post Cancel operation task with permitted authorization scope ... Test title: POST Cancel operation task with permitted authorization scope ... Test objective: The POST method initiates cancelling an ongoing VNF lifecycle operation while it is being executed or rolled back, i.e. the "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state with permitted authorization scope ... Pre-conditions: the "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. - ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: the resource is in FAILED_TEMP state @@ -113,7 +113,7 @@ Post Cancel operation task with not permitted authorization scope ... Test title: POST Cancel operation task with not permitted authorization scope ... Test objective: The POST method initiates cancelling an ongoing VNF lifecycle operation while it is being executed or rolled back, i.e. the "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state with not permitted authorization scope ... Pre-conditions: the "VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. - ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: the resource is in FAILED_TEMP state diff --git a/SOL002/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot b/SOL002/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot index 459a4906..a5b55364 100644 --- a/SOL002/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot @@ -13,7 +13,7 @@ POST Change current VNF Package Task ... Test title: POST Change current VNF Package Task ... Test objective: The objective is to test that the POST method changes the current VNF package on which the VNF instance is based. ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -26,7 +26,7 @@ POST Change current VNF Package Task - Conflict ... Test title: POST Change current VNF Package Task - Conflict ... Test objective: The objective is to test that the POST method cannot change the current VNF package task when another lifecycle management operation is ongoing. ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: There is another lifecycle management operation ongoing. ... Post-Conditions: none @@ -39,7 +39,7 @@ GET Change current VNF Package Task - Method not implemented ... Test title: GET Change current VNF Package Task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11a.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ PUT Change current VNF Package Task - Method not implemented ... Test title: PUT Change current VNF Package Task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11a.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ PATCH Change current VNF Package Task - Method not implemented ... Test title: PATCH Change current VNF Package Task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11a.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ DELETE Change current VNF Package Task - Method not implemented ... Test title: DELETE Change current VNF Package Task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11a.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ POST Change current VNF Package Task with permitted authorization scope ... Test title: POST Change current VNF Package Task with permitted authorization scope ... Test objective: The objective is to test that the POST method changes the current VNF package on which the VNF instance is based with permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -98,7 +98,7 @@ POST Change current VNF Package Task with not permitted authorization scope ... Test title: POST Change current VNF Package Task with not permitted authorization scope ... Test objective: The objective is to test that the POST method changes the current VNF package on which the VNF instance is based with not permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11a.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null diff --git a/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot b/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot index 484c2a3f..d5046bf1 100644 --- a/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot @@ -13,7 +13,7 @@ POST Change external VNF connectivity ... Test title: POST Change external VNF connectivity ... Test objective: The objective is to test that POST method triggers a change in VNF external connectivity ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -26,7 +26,7 @@ GET Change external VNF connectivity - Method not implemented ... Test title: GET Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ PUT Change external VNF connectivity - Method not implemented ... Test title: PUT Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -50,7 +50,7 @@ PATCH Change external VNF connectivity - Method not implemented ... Test title: PATCH Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -62,7 +62,7 @@ DELETE Change external VNF connectivity - Method not implemented ... Test title: DELETE Change external VNF connectivity - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ POST Change external VNF connectivity Conflict ... Test title: POST Change external VNF connectivity Conflict ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource or that a required child attribute of the "extensions" attribue has not been set. ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ POST Change external VNF connectivity with permitted authorization scope ... Test title: POST Change external VNF connectivity with permitted authorization value ... Test objective: The objective is to test that POST method triggers a change in VNF external connectivity with the permitted authorization value ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -98,7 +98,7 @@ POST Change external VNF connectivity with not permitted authorization scope ... Test title: POST Change external VNF connectivity with not permitted authorization value ... Test objective: The objective is to test that POST method triggers a change in VNF external connectivity with not permitted authorization value ... Pre-conditions: none - ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null diff --git a/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot b/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot index def3f569..6741749b 100644 --- a/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot @@ -13,7 +13,7 @@ POST Change deployment flavour of a vnfInstance ... Test title: POST Change deployment flavour of a vnfInstance ... Test objective: The objective is to test that POST method trigger a change in VNF deployment flavour ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -26,7 +26,7 @@ POST Change deployment flavour of a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Change deployment flavour of a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that POST method cannot trigger a change in VNF deployment flavour because of a conflict with the state of the VNF instance resource or that a required child attribute of the "extensions" attribue has not been set. ... Pre-conditions: VNF instance resource is not in NOT-INSTANTIATED state - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Change deployment flavour of a vnfInstance Not Found ... Test title: POST Change deployment flavour of a vnfInstance Not Found ... Test objective: The objective is to test that POST method cannot trigger a change in VNF deployment flavour because the VNF instance resource is not found. ... Pre-conditions: VNF instance resource is not in NOT-INSTANTIATED state - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Change deployment flavour VNFInstance - Method not implemented ... Test title: GET Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Change deployment flavour VNFInstance - Method not implemented ... Test title: PUT Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.7.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Change deployment flavour VNFInstance - Method not implemented ... Test title: PATCH Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.7.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Change deployment flavour VNFInstance - Method not implemented ... Test title: DELETE Change deployment flavour VNFInstance - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.7.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ POST Change deployment flavour of a vnfInstance with permited authorization scop ... Test title: POST Change deployment flavour of a vnfInstance with permited authorization scope ... Test objective: The objective is to test that POST method trigger a change in VNF deployment flavour with permited authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -112,7 +112,7 @@ POST Change deployment flavour of a vnfInstance with not permited authorization ... Test title: POST Change deployment flavour of a vnfInstance with not permited authorization scope ... Test objective: The objective is to test that POST method trigger a change in VNF deployment flavour with not permited authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null diff --git a/SOL002/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot b/SOL002/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot index 39f6239a..2e9d0dcd 100644 --- a/SOL002/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot +++ b/SOL002/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot @@ -13,7 +13,7 @@ POST Create VNF Snapshot Task ... Test title: POST Create VNF Snapshot Task ... Test objective: The objective is to test that POST method requests taking a snapshot of a VNF instance. ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -26,7 +26,7 @@ POST Create VNF Snapshot Task - NOT FOUND ... Test title: POST Create VNF Snapshot Task - NOT FOUND ... Test objective: The objective is to test that the POST method cannot request for a snapshot if the task is not supported for the VNF instance represented by the parent resource. ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: Task is not supported for the VNF instance represented by the parent resource. ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Create VNF Snapshot Task - CONFLICT ... Test title: POST Create VNF Snapshot Task - CONFLICT ... Test objective: The objective is to test that the POST method cannot request for a snapshot when the VNF instance is in NOT_INSTANTIATED state. ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: VNF instance is in NOT_INSTANTIATED state. ... Post-Conditions: none @@ -52,7 +52,7 @@ POST Create VNF Snapshot Task - UNPROCESSABLE CONTENT ... Test title: POST Create VNF Snapshot Task - UNPROCESSABLE CONTENT ... Test objective: The objective is to test that the POST method cannot request for a snapshot when the provided identifier of the target "Individual VNF snapshot" resource for the VNF snapshot is invalid. ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The identifier of the target "Individual VNF snapshot" resource for the VNF snapshot is invalid. ... Post-Conditions: none @@ -65,7 +65,7 @@ GET Create VNF Snapshot Task - Method not implemented ... Test title: GET Create VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.21.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ PUT Create VNF Snapshot Task - Method not implemented ... Test title: PUT Create VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.21.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ PATCH Create VNF Snapshot Task - Method not implemented ... Test title: PATCH Create VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.21.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -101,7 +101,7 @@ DELETE Create VNF Snapshot Task - Method not implemented ... Test title: DELETE Create VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.21.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -112,7 +112,7 @@ POST Create VNF Snapshot Task with permitted authorization scope ... Test title: POST Create VNF Snapshot Task with permitted authorization scope ... Test objective: The objective is to test that POST method requests taking a snapshot of a VNF instance with permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -124,7 +124,7 @@ POST Create VNF Snapshot Task with not permitted authorization scope ... Test title: POST Create VNF Snapshot Task with not permitted authorization scope ... Test objective: The objective is to test that POST method requests taking a snapshot of a VNF instance with not permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.21.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null diff --git a/SOL002/VNFLifecycleManagement-API/FailOperationTask.robot b/SOL002/VNFLifecycleManagement-API/FailOperationTask.robot index 1867bc63..f5b4933b 100644 --- a/SOL002/VNFLifecycleManagement-API/FailOperationTask.robot +++ b/SOL002/VNFLifecycleManagement-API/FailOperationTask.robot @@ -12,7 +12,7 @@ POST Fail operation task ... Test title: POST Fail operation task ... Test objective: The objective is to test that POST method mark as "finally failed" a VNF lifecycle operation if that operation has experienced a failure ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ POST Fail operation task Conflict (Not-FAILED_TEMP) ... Test title: POST Fail operation task Conflict (Not-FAILED_TEMP) ... Test objective: The objective is to test that POST method cannot mark as "finally failed" due to confilct with the state of LCM Operation Occurrence ... Pre-conditions: the "VNF LCM operation occurrence" resource is not in "FAILED_TEMP" state. - ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Fail operation task Not Found ... Test title: POST Fail operation task Not Found ... Test objective: The objective is to test that POST method cannot mark as "finally failed" a VNF lifecycle operation because the operation is not supported ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Fail operation task - Method not implemented ... Test title: GET Fail operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.16.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Fail operation task - Method not implemented ... Test title: PUT Fail operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.16.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Fail operation task - Method not implemented ... Test title: PATCH Fail operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.16.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Fail operation task - Method not implemented ... Test title: DELETE Fail operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.16.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.16.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ POST Fail operation task with permitted authorization scope ... Test title: POST Fail operation task with permitted authorization scope with permitted authorization scope ... Test objective: The objective is to test that POST method mark as "finally failed" a VNF lifecycle operation if that operation has experienced a failure with permitted authorization scope ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -112,7 +112,7 @@ POST Fail operation task with not permitted authorization scope ... Test title: POST Fail operation task with permitted authorization scope with not permitted authorization scope ... Test objective: The objective is to test that POST method mark as "finally failed" a VNF lifecycle operation if that operation has experienced a failure with not permitted authorization scope ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.16.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot b/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot index 01bd06e9..f748eeba 100644 --- a/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot @@ -13,7 +13,7 @@ POST Heal a vnfInstance ... Test title: POST Heal a vnfInstance ... Test objective: The objective is to test that POST method heal a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ POST Heal a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Heal a vnfInstance (Not-Instantiated) ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource or that a required child attribute of the "extensions" attribue has not been set. ... Pre-conditions: the VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ POST Heal a vnfInstance Not Found ... Test title: POST Heal a vnfInstance Not Found ... Test objective: The objective is to test that the operation cannot be executed because the VNF instance resource is not found. ... Pre-conditions: the VNF instance resource is not existing - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Heal VNFInstance - Method not implemented ... Test title: GET Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.9.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ PUT Heal VNFInstance - Method not implemented ... Test title: PUT Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.9.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ PATCH Heal VNFInstance - Method not implemented ... Test title: PATCH Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.9.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ DELETE Heal VNFInstance - Method not implemented ... Test title: DELETE Heal a vnfInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.9.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ POST Heal a vnfInstance with permitted authorization scope ... Test title: POST Heal a vnfInstance with permitted authorization scope ... Test objective: The objective is to test that POST method heal a VNF instance with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -112,7 +112,7 @@ POST Heal a vnfInstance with not permitted authorization scope ... Test title: POST Heal a vnfInstance with not permitted authorization scope ... Test objective: The objective is to test that POST method heal a VNF instance with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/IndividualSubscription.robot b/SOL002/VNFLifecycleManagement-API/IndividualSubscription.robot index 3b0d668b..54a9462d 100644 --- a/SOL002/VNFLifecycleManagement-API/IndividualSubscription.robot +++ b/SOL002/VNFLifecycleManagement-API/IndividualSubscription.robot @@ -11,7 +11,7 @@ POST Individual Subscription - Method not implemented ... Test title: POST Individual Subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.19.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -23,7 +23,7 @@ GET Individual Subscription ... Test title: GET Individual Subscription ... Test objective: The objective is to test the Get individual subscription ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ PUT an individual subscription - Method not implemented ... Test title: PUT Individual Subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.19.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ PATCH an individual subscription - Method not implemented ... Test title: PATCH Individual Subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.19.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ DELETE an individual subscription ... Test title: DELETE Individual Subscription ... Test objective: The objective is to test that the DELETE method removes an individual subscription ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.19.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -71,7 +71,7 @@ GET Individual Subscription with permitted authorization scope ... Test title: GET Individual Subscription with permitted authorization scope ... Test objective: The objective is to test the Get individual subscription with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -83,7 +83,7 @@ GET Individual Subscription with not permitted authorization scope ... Test title: GET Individual Subscription with not permitted authorization scope ... Test objective: The objective is to test the Get individual subscription with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.19.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot index 26dd5cbc..04225fd6 100644 --- a/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot +++ b/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot @@ -18,7 +18,7 @@ POST Individual VNFInstance - Method not implemented ... Test title: POST Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -30,7 +30,7 @@ GET Information about an individual VNF Instance ... Test title: GET Information about an individual VNF Instance ... Test objective: The objective is to create a new VNF instance resource ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -45,7 +45,7 @@ PUT Individual VNFInstance - Method not implemented ... Test title: PUT Individual VNFInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: VNF instance not modified @@ -57,7 +57,7 @@ PATCH Individual VNFInstance ... Test title: PATCH Individual VNFInstance ... Test objective: This method modifies an individual VNF instance resource ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: VNF instance modified @@ -70,7 +70,7 @@ PATCH Individual VNFInstance Precondition failed ... Test title: PATCH Individual VNFInstance Precondition failed ... Test objective: The objective is to that the modification of individual VNFInstance fails because precondition given in an HTTP request header is not fulfilled. Typically, this is due to an ETag mismatch, indicating that the resource was modified by another entity. ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -83,7 +83,7 @@ PATCH Individual VNFInstance Conflict ... Test title: PATCH Individual VNFInstance Conflict ... Test objective: The objective is to verify that modification operation cannot be executed currently, due to a conflict with the state of the VNF instance resource because another LCM Operation is ongoing. ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -96,7 +96,7 @@ DELETE Individual VNFInstance ... Test title: DELETE Individual VNFInstance ... Test objective: The objective is to delete a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: VNF instance deleted @@ -108,7 +108,7 @@ DELETE Individual VNFInstance Conflict ... Test title: DELETE Individual VNFInstance Conflict ... Test objective: The objective is to verify that The operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: VNF instance resource is in INSTANTIATED state - ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -120,7 +120,7 @@ GET Information about an individual VNF Instance with permitted authorization sc ... Test title: GET Information about an individual VNF Instance with permitted authorization scope ... Test objective: The objective is to create a new VNF instance resource with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -134,7 +134,7 @@ GET Information about an individual VNF Instance with permitted authorization sc ... Test title: GET Information about an individual VNF Instance with not permitted authorization scope ... Test objective: The objective is to create a new VNF instance resource with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot b/SOL002/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot index 8c01fa0d..fc04f553 100644 --- a/SOL002/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot +++ b/SOL002/VNFLifecycleManagement-API/IndividualVNFSnapshot.robot @@ -8,7 +8,7 @@ POST Individual VNF Snapshot - Method not implemented ... Test title: POST Individual VNF Snapshot - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.24.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -20,7 +20,7 @@ GET Information about an individual VNF Snapshot - SUCCESSFUL ... Test title: GET Information about an individual VNF Snapshot - SUCCESSFUL ... Test objective: The objective is to GET information about an individual VNF Snapshot ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -33,7 +33,7 @@ GET Information about an individual VNF Snapshot - NOT FOUND ... Test title: GET Information about an individual VNF Snapshot - NOT FOUND ... Test objective: The objective is to test that the retrieval of individual VNF Snapshot fails when using an invalid resource identifier. ... Pre-conditions: At least one individual VNF Snapshot is available in the NFV-MANO. - ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_NFV-MANO ... Applicability: none ... Post-Conditions: none @@ -46,7 +46,7 @@ PUT Individual VNF Snapshot - Method not implemented ... Test title: PUT Individual VNF Snapshot - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.24.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: VNF Snapshot not modified @@ -58,7 +58,7 @@ PATCH Individual VNF Snapshot - Method not implemented ... Test title: PATCH Individual VNF Snapshot - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.24.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -70,7 +70,7 @@ DELETE Individual VNF Snapshot ... Test title: DELETE Individual VNF Snapshot ... Test objective: The objective is to delete a VNF Snapshot ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.24.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: VNF Snapshot deleted @@ -82,7 +82,7 @@ DELETE Individual VNF Snapshot - Conflict ... Test title: DELETE Individual VNF Snapshot Conflict ... Test objective: The objective is to verify that The operation cannot be executed currently, due to a conflict with the state of the VNF Snapshot resource. ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.24.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: VNF snapshot is in use by some operation such as reverting a VNF instance to a VNF snapshot or creating a VNF snapshot package. ... Post-Conditions: none @@ -94,7 +94,7 @@ GET Information about an individual VNF Snapshot with permitted authorization sc ... Test title: GET Information about an individual VNF Snapshot with permitted authorization scope - SUCCESSFUL ... Test objective: The objective is to GET information about an individual VNF Snapshot with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -106,7 +106,7 @@ GET Information about an individual VNF Snapshot with not permitted authorizatio ... Test title: GET Information about an individual VNF Snapshot with not permitted authorization scope - SUCCESSFUL ... Test objective: The objective is to GET information about an individual VNF Snapshot with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.24.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot b/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot index 35a95e4d..b69413df 100644 --- a/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot +++ b/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot @@ -10,7 +10,7 @@ Post Individual VNF LCM OP occurrences - Method not implemented ... Test title: Post Individual VNF LCM OP occurrences - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.13.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -22,7 +22,7 @@ Get status information about individual VNF instances ... Test title: Get status information about individual VNF instances ... Test objective: The objective is to test that this method retrieve status information about a VNF lifecycle management operation occurrence ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -36,7 +36,7 @@ PUT status information about multiple VNF instances - Method not implemented ... Test title: PUT status information about multiple VNF instances - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.13.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ PATCH status information about multiple VNF instances - Method not implemented ... Test title: PATCH status information about multiple VNF instances - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.13.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -60,7 +60,7 @@ DELETE status information about multiple VNF instances - Method not implemented ... Test title: DELETE status information about multiple VNF instances - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.13.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -72,7 +72,7 @@ Get status information about individual VNF instances with permitted authorizati ... Test title: Get status information about individual VNF instances with permitted authorization scope ... Test objective: The objective is to test that this method retrieve status information about a VNF lifecycle management operation occurrence with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ Get status information about individual VNF instances with not permitted authori ... Test title: Get status information about individual VNF instances with not permitted authorization scope ... Test objective: The objective is to test that this method retrieve status information about a VNF lifecycle management operation occurrence with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot b/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot index 6db96e3f..c79d6f1a 100644 --- a/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot @@ -15,7 +15,7 @@ POST Instantiate a vnfInstance ... Test title: POST Instantiate a vnfInstance ... Test objective: The objective is to instantiate a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ POST Instantiate a vnfInstance Conflict ... Test title: POST Instantiate a vnfInstance Conflict ... Test objective: The objective is to verify that the instantiation of the vnf cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: VNF instance resource is in INSTANTIATED state - ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ GET Instantiate VNFInstance - Method not implemented ... Test title: GET Instantiate VNFInstance - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ PUT Instantiate VNFInstance - Method not implemented ... Test title: PUT Instantiate VNFInstance - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ PATCH Instantiate VNFInstance - Method not implemented ... Test title: PATCH Instantiate VNFInstance - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ DELETE Instantiate VNFInstance - Method not implemented ... Test title: DELETE Instantiate VNFInstance - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.4.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ POST Instantiate a vnfInstance with TaretScaleLevelId ... Test title: POST Instantiate a vnfInstance with TaretScaleLevelId attribute ... Test objective: The objective is to instantiate a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -102,7 +102,7 @@ POST Instantiate individual vnfInstance with instantiationLevelId ... Test title: POST Instantiate a vnfInstance with instantiationLevelId attribute ... Test objective: The objective is to instantiate a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -115,7 +115,7 @@ POST Instantiate a vnfInstance with permited authorization scope ... Test title: POST Instantiate a vnfInstance with permited authorization scope ... Test objective: The objective is to instantiate a VNF instance using correct OAuth scope value with permited authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -127,7 +127,7 @@ POST Instantiate a vnfInstance with not permited authorization scope ... Test title: POST Instantiate a vnfInstance with non permited authorization scope ... Test objective: The objective is to instantiate a VNF instance using incorrect OAuth scope value with not permited authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/NotificationEndpoint.robot b/SOL002/VNFLifecycleManagement-API/NotificationEndpoint.robot index 25bb81a4..451c5f51 100644 --- a/SOL002/VNFLifecycleManagement-API/NotificationEndpoint.robot +++ b/SOL002/VNFLifecycleManagement-API/NotificationEndpoint.robot @@ -14,7 +14,7 @@ VNF LCM Operation Occurrence Notification ... Test title: VNF LCM Operation Occurrence Start Notification ... Test objective: The objective is to test that VNF LCM Operation Occurrence Notification is delivered with success to the notification consumer ... Pre-conditions: A subscription for VNF LCM Operation Occurrence notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ VNF Identifier Creation Notification ... Test title: VNF Identifier Creation Notification ... Test objective: The objective is to test that VNF Identifier Creation Notification is delivered with success to the notification consumer ... Pre-conditions: A subscription for VNF Identifier Creation Notification is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -38,7 +38,7 @@ VNF Identifier Deletion Notification ... Test title: VNF Identifier Deletion Notification ... Test objective: The objective is to test that VNF Identifier Deletion Notification is delivered with success to the notification consumer ... Pre-conditions: A subscription for VNF Identifier Deletion Notification is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/Notifications.robot b/SOL002/VNFLifecycleManagement-API/Notifications.robot index be8e0e94..bce80641 100644 --- a/SOL002/VNFLifecycleManagement-API/Notifications.robot +++ b/SOL002/VNFLifecycleManagement-API/Notifications.robot @@ -13,7 +13,7 @@ VNF LCM Operation Occurrence Start Notification ... Test title: VNF LCM Operation Occurrence Start Notification ... Test objective: The objective is to test the dispatch of VNF LCM Operation Occurrence Start Notification when a new VNF LCM operation is started in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A subscription for VNF LCM Operation Occurrence notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ VNF LCM Operation Occurrence Result Notification ... Test title: VNF LCM Operation Occurrence Result Notification ... Test objective: The objective is to test the dispatch of VNF LCM Operation Occurrence Result Notification when a VNF LCM operation is completed in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: An VNF LCM operation is in progress, and a subscription for VNF LCM Operation Occurrence notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ VNF Identifier Creation Notification ... Test title: VNF Identifier Creation Notification ... Test objective: The objective is to test the dispatch of VNF Identifier Creation Notification when a new VNF instance resource is created in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A subscription for VNF identifier creation notifications is available in the VNFM. - ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.20.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ VNF Identifier Deletion Notification ... Test title: VNF Identifier Deletion Notification ... Test objective: The objective is to test the dispatch of VNF Identifier Deletion Notification when a VNF instance resource is deleted in the VNFM, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF instance resource is created, and a subscription for VNF identifier creation notifications is available in the VNFM. - ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot b/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot index b803e51e..7ad05a0d 100644 --- a/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot @@ -13,7 +13,7 @@ POST Operate a vnfInstance ... Test title: POST Operate a vnfInstance ... Test objective: The objective is to test that POST method operate a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ POST Operate a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Operate a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource or that a required child attribute of the "extensions" attribue has not been set. ... Pre-conditions: the VNF instance resource is in NOT_INSTANTIATED state - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Operate a vnfInstance Not Found ... Test title: POST Operate a vnfInstance Not Found ... Test objective: The objective is to test that the operation cannot be executed currently, because the resource is not existing ... Pre-conditions: the VNF instance resource is in not existing - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Operate VNFInstance - Method not implemented ... Test title: GET Operate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.10.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Operate VNFInstance - Method not implemented ... Test title: PUT Operate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.10.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Operate VNFInstance - Method not implemented ... Test title: PATCH Operate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.10.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Operate VNFInstance - Method not implemented ... Test title: DELETE Operate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.10.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ POST Operate a vnfInstance with permitted authorization scope ... Test title: POST Operate a vnfInstance with permitted authorization scope ... Test objective: The objective is to test that POST method operate a VNF instance with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -111,7 +111,7 @@ POST Operate a vnfInstance with not permitted authorization scope ... Test title: POST Operate a vnfInstance with not permitted authorization scope ... Test objective: The objective is to test that POST method operate a VNF instance with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.10.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/RetryOperationTask.robot b/SOL002/VNFLifecycleManagement-API/RetryOperationTask.robot index 53c76dc3..db4a4c8d 100644 --- a/SOL002/VNFLifecycleManagement-API/RetryOperationTask.robot +++ b/SOL002/VNFLifecycleManagement-API/RetryOperationTask.robot @@ -14,7 +14,7 @@ POST Retry operation task ... Test title: POST Retry operation task ... Test objective: The objective is to test that the POST method initiates retrying a VNF lifecycle operation if that operation has experienced a temporary failure ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ POST Retry operation task Conflict (Not-FAILED_TEMP) ... Test title: POST Retry operation task Conflict (Not-FAILED_TEMP) ... Test objective: The objective is to test that the retry operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. (i.e. the VNF instance resource is not in FAILED_TEMP state) ... Pre-conditions: the "VNF LCM operation occurrence" resource is not in "FAILED_TEMP" state. - ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ POST Retry operation task Not Found ... Test title: POST Retry operation task Not Found ... Test objective: The objective is to test that the retry operation cannot be executed because the operation is not supported ... Pre-conditions: - ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Retry operation task - Method not implemented ... Test title: GET Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.14.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ PUT Retry operation task - Method not implemented ... Test title: PUT Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.14.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ PATCH Retry operation task - Method not implemented ... Test title: PATCH Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.14.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ DELETE Retry operation task - Method not implemented ... Test title: DELETE Retry operation task- Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.14.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.14.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ POST Retry operation task with permitted authorization scope ... Test title: POST Retry operation task with permitted authorization scope ... Test objective: The objective is to test that the POST method initiates retrying a VNF lifecycle operation if that operation has experienced a temporary failure with permitted authorization scope ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -112,7 +112,7 @@ POST Retry operation task with not permitted authorization scope ... Test title: POST Retry operation task with not permitted authorization scope ... Test objective: The objective is to test that the POST method initiates retrying a VNF lifecycle operation if that operation has experienced a temporary failure with not permitted authorization scope ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.14.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot b/SOL002/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot index 0d316817..6997b80a 100644 --- a/SOL002/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot +++ b/SOL002/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot @@ -13,7 +13,7 @@ POST Revert to VNF Snapshot Task ... Test title: POST Revert to VNF Snapshot Task ... Test objective: The objective is to test that POST method requests reverting a VNF/VNFC instance to a VNF/VNFC snapshot. ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -26,7 +26,7 @@ POST Revert to VNF Snapshot Task - NOT FOUND ... Test title: POST Revert to VNF Snapshot Task - NOT FOUND ... Test objective: The objective is to test that the POST method cannot request reverting to a snapshot if the task is not supported for the VNF instance represented by the parent resource. ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: Task is not supported for the VNF instance represented by the parent resource. ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Revert to VNF Snapshot Task - CONFLICT ... Test title: POST Revert to VNF Snapshot Task - CONFLICT ... Test objective: The objective is to test that the POST method cannot request reverting to a snapshot when the VNF instance is in NOT_INSTANTIATED state. ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: VNF instance is in NOT_INSTANTIATED state. ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Revert to VNF Snapshot Task - Method not implemented ... Test title: GET Revert to VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that GET method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.22.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Revert to VNF Snapshot Task - Method not implemented ... Test title: PUT Revert to VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.22.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Revert to VNF Snapshot Task - Method not implemented ... Test title: PATCH Revert to VNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.22.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Revert to VNF Snapshot Task - Method not implemented ... Test title: DELETE Revert to sVNF Snapshot Task - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.22.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -99,7 +99,7 @@ POST Revert to VNF Snapshot Task with permitted authorization scope ... Test title: POST Revert to VNF Snapshot Task with permitted authorization scope. ... Test objective: The objective is to test that POST method requests reverting a VNF/VNFC instance to a VNF/VNFC snapshot with permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -111,7 +111,7 @@ POST Revert to VNF Snapshot Task with not permitted authorization scope ... Test title: POST Revert to VNF Snapshot Task with not permitted authorization scope. ... Test objective: The objective is to test that POST method requests reverting a VNF/VNFC instance to a VNF/VNFC snapshot with not permitted authorization scope. ... Pre-conditions: none - ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.22.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null diff --git a/SOL002/VNFLifecycleManagement-API/RollbackOperationTask.robot b/SOL002/VNFLifecycleManagement-API/RollbackOperationTask.robot index 301ded5e..98c30329 100644 --- a/SOL002/VNFLifecycleManagement-API/RollbackOperationTask.robot +++ b/SOL002/VNFLifecycleManagement-API/RollbackOperationTask.robot @@ -14,7 +14,7 @@ POST Rollback operation task ... Test title: POST Rollback operation task ... Test objective: The objective is to test that POST method initiates rollback a VNF lifecycle operation if that operation has experienced a temporary failure ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -27,7 +27,7 @@ POST Rollback operation task Conflict (Not-FAILED_TEMP) ... Test title: POST Rollback operation task Conflict (Not-FAILED_TEMP) ... Test objective: The objective is to test that POST method The POST method initiates rollback a VNF lifecycle operation if that operation has experienced a temporary failure ... Pre-conditions: the "VNF LCM operation occurrence" resource is not in "FAILED_TEMP" state. - ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ POST Rollback operation task Not Found ... Test title: POST Rollback operation task Not Found ... Test objective: The objective is to test that the retry operation cannot be executed because the operation is not supported ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Rollback operation task - Method not implemented ... Test title: GET Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.15.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ PUT Rollback operation task - Method not implemented ... Test title: PUT Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.15.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -77,7 +77,7 @@ PATCH Rollback operation task - Method not implemented ... Test title: PATCH Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.15.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -89,7 +89,7 @@ DELETE Rollback operation task - Method not implemented ... Test title: DELETE Rollback operation task - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.15.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.15.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ POST Rollback operation task with permitted authorization value ... Test title: POST Rollback operation task with permitted authorization value. ... Test objective: The objective is to test that POST method initiates rollback a VNF lifecycle operation if that operation has experienced a temporary failure with permitted authorization scope ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -112,7 +112,7 @@ POST Rollback operation task with not permitted authorization value ... Test title: POST Rollback operation task with not permitted authorization value. ... Test objective: The objective is to test that POST method initiates rollback a VNF lifecycle operation if that operation has experienced a temporary failure with not permitted authorization scope ... Pre-conditions: the "VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. - ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.15.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot b/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot index 44721d4d..976b7041 100644 --- a/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot @@ -13,7 +13,7 @@ POST Scale a vnfInstance ... Test title: POST Scale a vnfInstance ... Test objective: The objective is to scale a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ POST Scale a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Scale a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to verify that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Scale a vnfInstance Not Found ... Test title: POST Scale a vnfInstance Not Found ... Test objective: The objective is to verify that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource. ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Scale VNFInstance - Method not implemented ... Test title: GET Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Scale VNFInstance - Method not implemented ... Test title: PUT Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Scale VNFInstance - Method not implemented ... Test title: PATCH Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Scale VNFInstance - Method not implemented ... Test title: DELETE Scale VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ POST Scale a vnfInstance with permited authorization scope ... Test title: POST Scale a vnfInstance with permited authorization scope ... Test objective: The objective is to scale a VNF instance with permited authorization scope with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -112,7 +112,7 @@ POST Scale a vnfInstance with not permited authorization scope ... Test title: POST Scale a vnfInstance with not permited authorization scope ... Test objective: The objective is to scale a VNF instance with not permited authorization scope with not permited authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot b/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot index 9f37e425..5fd08f49 100644 --- a/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot @@ -12,7 +12,7 @@ POST Scale a vnfInstance to level with Attribute instantiationLevelId ... Test title: POST Scale a vnfInstance to level with instantiationLevelId attribute ... Test objective: The objective is to scale a VNF instance to a target level. ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ POST Scale a vnfInstance to level Conflict (Not-Instantiated) ... Test title: POST Scale a vnfInstance to level Conflict (Not-Instantiated) ... Test objective: The objective is to verify that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource or that a required child attribute of the "extensions" attribue has not been set. ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Scale a vnfInstance Not Found ... Test title: POST Scale a vnfInstance Not Found ... Test objective: The objective is to verify that the VNF Scale operation fails when the VNF instance resource is not present ... Pre-conditions: VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Scale to level VNFInstance - Method not implemented ... Test title: GET Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Scale to level VNFInstance - Method not implemented ... Test title: PUT Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Scale to level VNFInstance - Method not implemented ... Test title: PATCH Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Scale to level VNFInstance - Method not implemented ... Test title: DELETE Scale to level VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ POST Scale a vnfInstance to level with Attribute instantiationLevelId and permit ... Test title: POST Scale a vnfInstance to level with instantiationLevelId attribute and permitted authorization scope ... Test objective: The objective is to scale a VNF instance to a target level using OAuth token with permitted scope ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -112,7 +112,7 @@ POST Scale a vnfInstance to level with Attribute instantiationLevelId and not pe ... Test title: POST Scale a vnfInstance to level with instantiationLevelId attribute and not permitted authorization scope ... Test objective: The objective is to scale a VNF instance to a target level using OAuth token with not permitted scope ... Pre-conditions: none - ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/Subscriptions.robot b/SOL002/VNFLifecycleManagement-API/Subscriptions.robot index 13e08586..7bcbe8b8 100644 --- a/SOL002/VNFLifecycleManagement-API/Subscriptions.robot +++ b/SOL002/VNFLifecycleManagement-API/Subscriptions.robot @@ -15,7 +15,7 @@ POST Create a new subscription ... Test title: POST Create a new subscription ... Test objective: The POST method creates a new subscription ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -28,7 +28,7 @@ POST Create a new Subscription - DUPLICATION ... Test title: POST Create a new subscription - DUPLICATION ... Test objective: The POST method creates a new subscription even if an existing subscription to same content exist ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: SUT should support duplication of subscription creation ... Post-Conditions: in response header Location shall not be null @@ -41,7 +41,7 @@ POST Create a new Subscription - NO-DUPLICATION ... Test title: POST Create a new subscription - NO-DUPLICATION ... Test objective: The POST method creates a new subscription even if an existing subscription to same content exist ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: SUT should not support duplication of subscription creation ... Post-Conditions: in response header Location shall not be null @@ -54,7 +54,7 @@ GET Subscriptions ... Test title: GET Subscriptions ... Test objective: The objective is Get the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -67,7 +67,7 @@ GET Subscription - Filter ... Test title: GET Subscriptions - Filter ... Test objective: The objective is Get the list of active subscriptions using a "filter" ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -80,7 +80,7 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test title: GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is Get the list of active subscriptions using a filter ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -93,7 +93,7 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test title: GET subscriptions with all_fields attribute selector ... Test objective: The objective is Get the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -106,7 +106,7 @@ GET subscriptions with exclude_default attribute selector ... Test title: GET subscriptions with exclude_default attribute selector ... Test objective: The objective is Get the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -119,7 +119,7 @@ GET subscriptions with fields attribute selector ... Test title: GET subscriptions with fields attribute selector ... Test objective: The objective is Get the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -132,7 +132,7 @@ GET subscriptions with exclude_fields attribute selector ... Test title: GET subscriptions with exclude_fields attribute selector ... Test objective: The objective is Get the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -145,7 +145,7 @@ PUT subscriptions - Method not implemented ... Test title: PUT subscriptions - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -157,7 +157,7 @@ PATCH subscriptions - Method not implemented ... Test title: PATCH subscriptions - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -169,7 +169,7 @@ DELETE subscriptions - Method not implemented ... Test title: DELETE subscriptions - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: check that resources are not deleted @@ -182,7 +182,7 @@ POST Create a new Subscription - Unprocessable Content ... Test title: POST Create a new Subscription - Unprocessable Content ... Test objective: The objective is to test that content type of the message content is supported and the message content of a request contains syntactically correct data but the data cannot be processed. ... re-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -195,7 +195,7 @@ GET information about multiple subscriptions to get Paged Response ... Test title: GET information about multiple subscriptions to get Paged Response ... Test objective: The objective is to retrieve information about the subscriptions to get paged response ... Pre-conditions: - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: @@ -208,7 +208,7 @@ GET information about multiple subscriptions for Bad Request Response too big ... Test title: GET information about multiple subscriptions for Bad Request Response too big ... Test objective: The objective is to test that GET method fail retrieving status information about subscriptions when Response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: - ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: ... Post-Conditions: @@ -220,7 +220,7 @@ POST Create a new subscription with permitted authorization scope ... Test title: POST Create a new subscription with permitted authorization scope ... Test objective: The POST method creates a new subscription with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null @@ -232,7 +232,7 @@ POST Create a new subscription with not permitted authorization scope ... Test title: POST Create a new subscription with not permitted authorization scope ... Test objective: The POST method creates a new subscription with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.18.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: in response header Location shall not be null diff --git a/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot b/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot index ca634c01..e955e495 100644 --- a/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot @@ -13,7 +13,7 @@ POST Terminate a vnfInstance ... Test title: POST Terminate a vnfInstance ... Test objective: The objective is to test that POST method terminate a VNF instance ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ POST Terminate a vnfInstance Conflict (Not-Instantiated) ... Test title: POST Terminate a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that the operation cannot be executed currently, due to a conflict with the state of the VNF instance resource or that a required child attribute of the "extensions" attribue has not been set. ... Pre-conditions: VNF instance resource is in NOT_INSTANTIATED state - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ GET Terminate VNFInstance - Method not implemented ... Test title: GET Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.8.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ PUT Terminate VNFInstance - Method not implemented ... Test title: PUT Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.8.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ PATCH Terminate VNFInstance - Method not implemented ... Test title: PATCH Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.8.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -75,7 +75,7 @@ DELETE Terminate VNFInstance - Method not implemented ... Test title: DELETE Terminate VNFInstance - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.8.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -86,7 +86,7 @@ POST Terminate a vnfInstance with permited authorization scope ... Test title: POST Terminate a vnfInstance with permited authorization scope ... Test objective: The objective is to test that POST method terminate a VNF instance with permited authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -98,7 +98,7 @@ POST Terminate a vnfInstance with not permited authorization scope ... Test title: POST Terminate a vnfInstance with not permited authorization scope ... Test objective: The objective is to test that POST method terminate a VNF instance with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.8.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/VNFInstances.robot b/SOL002/VNFLifecycleManagement-API/VNFInstances.robot index 4358e7be..79fec640 100644 --- a/SOL002/VNFLifecycleManagement-API/VNFInstances.robot +++ b/SOL002/VNFLifecycleManagement-API/VNFInstances.robot @@ -12,7 +12,7 @@ POST Create a new vnfInstance ... Test title: POST Create a new vnfInstance ... Test objective: The objective is to create a new VNF instance resource ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: VNF instance created @@ -26,7 +26,7 @@ GET information about multiple VNF instances ... Test title: GET information about multiple VNF instances ... Test objective: The objective is to get information about multiples VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ GET information about multiple VNF instances Bad Request Invalid attribute-based ... Test title: GET information about multiple VNF instances Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to get information about multiples VNF instances with Invalid attribute-based filtering parameters ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET information about multiple VNF instances Bad Request Invalid attribute selec ... Test title: GET information about multiple VNF instances Bad Request Invalid attribute selector ... Test objective: The objective is to get information about multiples VNF instances with Invalid attribute-based filtering parameters ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -66,7 +66,7 @@ GET information about multiple VNF instances with "all_fields" attribute selecto ... Test title: GET information about multiple VNF instances with "all_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -79,7 +79,7 @@ GET information about multiple VNF instances with "exclude_default" attribute se ... Test title: GET information about multiple VNF instances with "exclude_default" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -92,7 +92,7 @@ GET information about multiple VNF instances with "fields" attribute selector ... Test title: GET information about multiple VNF instances with "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -105,7 +105,7 @@ GET information about multiple VNF instances with "exclude_fields" attribute sel ... Test title: GET information about multiple VNF instances with "exclude_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -118,7 +118,7 @@ PUT VNFInstances - Method not implemented ... Test title: PUT VNFInstances - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -130,7 +130,7 @@ PATCH VNFInstances - Method not implemented ... Test title: PATCH VNFInstances - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -142,7 +142,7 @@ DELETE VNFInstances - Method not implemented ... Test title: DELETE VNFInstances - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: VNF instance not deleted @@ -154,7 +154,7 @@ GET information about multiple VNF instances with "exclude_default" and "fields" ... Test title: GET information about multiple VNF instances with "exclude_default" and "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF instances ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -167,7 +167,7 @@ POST Create a new vnfInstance - UNPROCESSABLE CONTENT ... Test title: POST Create a new vnfInstance - UNPROCESSABLE CONTENT ... Test objective: The objective is to test that a new VNF instance resource is not created when ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: vnfdId of the referenced VNF package is not in ENABLED state or does not exist. ... Post-Conditions: VNF instance created @@ -179,7 +179,7 @@ POST Create a new vnfInstance with permitted authorization scope ... Test title: POST Create a new vnfInstance with permitted authorization scope ... Test objective: The objective is to create a new VNF instance resource with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: VNF instance created @@ -192,7 +192,7 @@ POST Create a new vnfInstance with not permitted authorization scope ... Test title: POST Create a new vnfInstance with not permitted authorization scope ... Test objective: The objective is to create a new VNF instance resource with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: VNF instance created diff --git a/SOL002/VNFLifecycleManagement-API/VNFSelectDeployableModules.robot b/SOL002/VNFLifecycleManagement-API/VNFSelectDeployableModules.robot index 5fdf62ee..8718b492 100644 --- a/SOL002/VNFLifecycleManagement-API/VNFSelectDeployableModules.robot +++ b/SOL002/VNFLifecycleManagement-API/VNFSelectDeployableModules.robot @@ -12,7 +12,7 @@ POST Select VNF Deployable Module ... Test title: POST Select VNF Deployable Module ... Test objective: The objective is to select VNF Deployable Module ... Pre-conditions: The VNF instance resource is in INSTANTIATED state - ... Reference: Clause 5.4.11b.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11b.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ POST Select VNF Deployable Module Not Found ... Test title: POST Select VNF Deployable Module Not Found ... Test objective: The objective is to test that the POST Select VNF Deployable Module fails when the resource is not present. ... Pre-conditions: none - ... Reference: Clause 5.4.11b.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11b.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ POST Select VNF Deployable Module with conflict (Not Instantiated) ... Test title: POST Operate a vnfInstance Conflict (Not-Instantiated) ... Test objective: The objective is to test that the operation fails when there is a conflict with the resource state. ... Pre-conditions: the VNF instance resource is in NOT-INSTANTIATED state - ... Reference: Clause 5.4.11b.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11b.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET Select VNF Deployable Module - Method not implemented ... Test title: GET Select VNF Deployable Module - Method not implemented ... Test objective: The objective is to verify that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11b.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11b.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -64,7 +64,7 @@ PUT Select VNF Deployable Module - Method not implemented ... Test title: PUT Select VNF Deployable Module - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11b.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11b.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -76,7 +76,7 @@ PATCH Select VNF Deployable Module - Method Not implemented ... Test title: PATCH Select VNF Deployable Module - Method Not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11b.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11b.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ DELETE Select VNF Deployable Module - Method Not implemented ... Test title: DELETE Select VNF Deployable Module - Method Not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.11b.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.11b.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFLifecycleManagement-API/VNFSnapshots.robot b/SOL002/VNFLifecycleManagement-API/VNFSnapshots.robot index 0556b056..588cff4f 100644 --- a/SOL002/VNFLifecycleManagement-API/VNFSnapshots.robot +++ b/SOL002/VNFLifecycleManagement-API/VNFSnapshots.robot @@ -8,7 +8,7 @@ POST Create a new VNF Snapshot ... Test title: POST Create a new VNF Snapshot ... Test objective: The objective is to create a new VNF snapshot ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.23.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: VNF snapshot is created @@ -22,7 +22,7 @@ GET information about multiple VNF Snapshots ... Test title: GET information about multiple VNF Snapshots ... Test objective: The objective is to get information about multiples VNF snapshots ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -35,7 +35,7 @@ GET information about multiple VNF Snapshots Bad Request Invalid attribute-based ... Test title: GET information about multiple VNF Snapshots Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to get information about multiples VNF Snapshots with Invalid attribute-based filtering parameters ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -48,7 +48,7 @@ GET information about multiple VNF Snapshots Bad Request Invalid attribute selec ... Test title: GET information about multiple VNF Snapshots Bad Request Invalid attribute selector ... Test objective: The objective is to get information about multiples VNF Snapshots with Invalid attribute-based filtering parameters ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -61,7 +61,7 @@ GET information about multiple VNF Snapshots with "all_fields" attribute selecto ... Test title: GET information about multiple VNF Snapshots with "all_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshots ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -74,7 +74,7 @@ GET information about multiple VNF Snapshots with "exclude_default" attribute se ... Test title: GET information about multiple VNF Snapshots with "exclude_default" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshots ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -87,7 +87,7 @@ GET information about multiple VNF Snapshots with "fields" attribute selector ... Test title: GET information about multiple VNF Snapshots with "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshots ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ GET information about multiple VNF Snapshots with "exclude_default" and "fields" ... Test title: GET information about multiple VNF Snapshots with "exclude_default" and "fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshots ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -113,7 +113,7 @@ GET information about multiple VNF Snapshots with "exclude_fields" attribute sel ... Test title: GET information about multiple VNF Snapshots with "exclude_fields" attribute selector ... Test objective: The objective is to query information about multiple VNF Snapshots ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -126,7 +126,7 @@ GET VNF Snapshots - Bad Request Response too Big ... Test title: GET VNF Snapshots - Bad Request Response too Big ... Test objective: The objective is test that the retrieval of existing VNF Snapshots list fails because response is too big, and perform the JSON schema validation of the failed operation HTTP response. ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: VNFM does not support paged response. ... Post-Conditions: none @@ -139,7 +139,7 @@ GET VNF Snapshots as Paged Response ... Test title: GET VNF Snapshots as Paged Response ... Test objective: The objective is to test that GET method retrieves the list of existing VNF Snapshots as paged response. ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.23.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: VNFM supports paged response. ... Post-Conditions: none @@ -152,7 +152,7 @@ PUT VNF Snapshots - Method not implemented ... Test title: PUT VNF Snapshots - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.23.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -164,7 +164,7 @@ PATCH VNF Snapshots - Method not implemented ... Test title: PATCH VNF Snapshots - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.23.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -176,7 +176,7 @@ DELETE VNF Snapshots - Method not implemented ... Test title: DELETE VNF Snapshots - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.23.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: VNF instance not deleted @@ -187,7 +187,7 @@ POST Create a new VNF Snapshot with permitted authorization scope ... Test title: POST Create a new VNF Snapshot with permitted authorization scope ... Test objective: The objective is to create a new VNF snapshot with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.23.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: VNF snapshot is created @@ -200,7 +200,7 @@ POST Create a new VNF Snapshot with not permitted authorization scope ... Test title: POST Create a new VNF Snapshot with not permitted authorization scope ... Test objective: The objective is to create a new VNF snapshot with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.23.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.23.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: VNF snapshot is created diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot index ea4973ce..e26c9267 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot @@ -13,7 +13,7 @@ POST VNF LCM operation occurrences - Method not implemented ... Test title: POST VNF LCM operation occurrences - Method not implemented ... Test objective: The objective is to test that POST method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.12.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET status information about multiple VNF LCM operation occurrences ... Test title: GET status information about multiple VNF LCM operation occurrences ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ GET status information about multiple VNF LCM operation occurrences Bad Request ... Test title: GET status information about multiple VNF LCM operation occurrences Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to test that GET method fail retrieving status information about multiple VNF lifecycle management operation occurrences because attribute is invalid. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET status information about multiple VNF LCM Operation occurrences Bad Request ... Test title: GET status information about multiple VNF LCM Operation occurrences Bad Request Invalid attribute selector ... Test objective: The objective is to test that GET method fail retrieving status information about multiple VNF lifecycle management operation occurrences because attribute is invalid. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ GET status information about multiple VNF LCM Operation occurrences with "all_fi ... Test title: GET status information about multiple VNF LCM Operation OCC with "all_fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -78,7 +78,7 @@ GET status information about multiple VNF LCM Operation occurrences with "exlude ... Test title: GET status information about multiple VNF LCM Operation OCC with "exclude_default" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -91,7 +91,7 @@ GET status information about multiple VNF LCM Operation occurrences with "fields ... Test title: GET status information about multiple VNF LCM Operation OCC with "fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -104,7 +104,7 @@ GET status information about multiple VNF LCM Operation occurrences with "exclud ... Test title: GET status information about multiple VNF LCM Operation OCC with "exclude_fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -117,7 +117,7 @@ PUT status information about multiple VNF LCM operation occurrences - Method not ... Test title: PUT status information about multiple VNF LCM operation occurrences - Method not implemented ... Test objective: The objective is to test that PUT method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.12.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -129,7 +129,7 @@ PATCH status information about multiple VNF LCM operation occurrences - Method n ... Test title: PATCH status information about multiple VNF LCM operation occurrences - Method not implemented ... Test objective: The objective is to test that PATCH method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.12.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -141,7 +141,7 @@ DELETE status information about multiple VNF LCM operation occurrences - Method ... Test title: DELETE status information about multiple VNF LCM operation occurrences - Method not implemented ... Test objective: The objective is to test that DELETE method is not implemented ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.12.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -153,7 +153,7 @@ GET status information about multiple VNF LCM operation occurances to get Paged ... Test title: GET status information about multiple VNF LCM operation occurances to get Paged Response ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences to get paged response. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -166,7 +166,7 @@ GET status information about multiple VNF LCM Operation occurrences Bad Request ... Test title: GET status information about multiple VNF LCM Operation occurrences Bad Request Response too big ... Test objective: The objective is to test that GET method fail retrieving status information about multiple VNF lifecycle management operation occurrences because Response is too big. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -179,7 +179,7 @@ GET status information about multiple VNF LCM Operation occurrences with "exlude ... Test title: GET status information about multiple VNF LCM Operation OCC with "exclude_default" and "fields" ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences. ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -191,7 +191,7 @@ GET status information about multiple VNF LCM operation occurrences with permitt ... Test title: GET status information about multiple VNF LCM operation occurrences with permitted authorization scope ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -204,7 +204,7 @@ GET status information about multiple VNF LCM operation occurrences with not per ... Test title: GET status information about multiple VNF LCM operation occurrences with not permitted authorization scope ... Test objective: The objective is to test that GET method retrieve Query status information about multiple VNF lifecycle management operation occurrences with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none -- GitLab From 2731a03bcfce9844af9e59fe4176dcefdc664a5d Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 5 Dec 2024 17:14:51 +0500 Subject: [PATCH 08/37] Editorial Changes: Reformat schemas --- .../schemas/ApiVersionInformation.schema.json | 64 +- ...perationOccurrenceNotification.schema.json | 2304 ++++---- .../schemas/VnfSnapshotInfo.schema.json | 4936 ++++++++--------- .../schemas/vnfInstance.schema.json | 4 +- .../schemas/vnfInstances.schema.json | 4 +- 5 files changed, 3656 insertions(+), 3656 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/schemas/ApiVersionInformation.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/ApiVersionInformation.schema.json index a7964119..b3582ea4 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/ApiVersionInformation.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/ApiVersionInformation.schema.json @@ -1,36 +1,36 @@ { - "description": "This type represents API version information.\n", - "type": "object", - "required": [ - "uriPrefix", - "apiVersions" - ], - "properties": { - "uriPrefix": { - "description": "Specifies the URI prefix for the API, in the following form {apiRoot}/{apiName}/{apiMajorVersion}/.\n", - "type": "string" - }, - "apiVersions": { - "description": "Version(s) supported for the API signaled by the uriPrefix attribute.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "version" - ], - "properties": { - "version": { - "description": "Identifies a supported version. The value of the version attribute shall be a version identifier as specified in clause 9.1 (SOL013).\n", - "type": "string" - }, - "isDeprecated": { - "description": "If such information is available, this attribute indicates whether use of the version signaled by the version attribute is deprecated (true) or not (false).\nA deprecated version is still supported by the API producer but is recommended not to be used any longer. When a version is no longer supported, it does not appear in the response body.\n", - "type": "boolean" - }, - "retirementDate": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" + "description": "This type represents API version information.\n", + "type": "object", + "required": [ + "uriPrefix", + "apiVersions" + ], + "properties": { + "uriPrefix": { + "description": "Specifies the URI prefix for the API, in the following form {apiRoot}/{apiName}/{apiMajorVersion}/.\n", + "type": "string" + }, + "apiVersions": { + "description": "Version(s) supported for the API signaled by the uriPrefix attribute.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "version" + ], + "properties": { + "version": { + "description": "Identifies a supported version. The value of the version attribute shall be a version identifier as specified in clause 9.1 (SOL013).\n", + "type": "string" + }, + "isDeprecated": { + "description": "If such information is available, this attribute indicates whether use of the version signaled by the version attribute is deprecated (true) or not (false).\nA deprecated version is still supported by the API producer but is recommended not to be used any longer. When a version is no longer supported, it does not appear in the response body.\n", + "type": "boolean" + }, + "retirementDate": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" } } } diff --git a/SOL002/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json index 09765784..f65e7b43 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json @@ -2,1257 +2,1257 @@ "description": "This type represents a VNF lifecycle management operation occurrence notification, which informs the receiver of changes in the VNF lifecycle caused by a VNF LCM operation occurrence. The support of the notification is mandatory. This notification shall be triggered by the VNFM when there is a change in the VNF lifecycle caused by a VNF LCM operation occurrence, including: * Instantiation of the VNF * Scaling of the VNF instance (including auto-scaling) * Healing of the VNF instance (including auto-healing) * Change of the state of the VNF instance (i.e. Operate VNF) * Change of the deployment flavour of the VNF instance * Change of the external connectivity of the VNF instance * Termination of the VNF instance * Modification of VNF instance information and/or VNF configurable\n properties through the \"PATCH\" method on the \"Individual VNF instance\"\n resource.\nIf this is the initial notification about the start of a VNF LCM operation occurrence, it is assumed that the notification is sent by the VNFM before any action (including sending the grant request) is taken as part of the LCM operation. Due to possible race conditions, the \"start\" notification, the grant request and the LCM operation acknowledgment can arrive in any order at the NFVO, and the NFVO shall be able to handle such a situation. If this is a notification about a final or intermediate result state of a VNF LCM operation occurrence, the notification shall be sent after all related actions of the LCM operation that led to this state have been executed. The new state shall be set in the \"Individual VNF LCM operation occurrence\" resource before the notification about the state change is sent. * NOTE 1:\tShall be present if the \"notificationStatus\" is set to \"RESULT\", the \"verbosity\" attribute is set\n to \"FULL\" and the operation has performed any resource modification. Shall be absent otherwise.\n This attribute contains information about the cumulative changes to virtualised resources that\n were performed so far by the VNF LCM operation occurrence and by any of the error handling\n procedures for that operation occurrence.\n NOTE 2:\tFor a particular affected VL, there shall be as many \"AffectedVirtualLink\" entries as needed\n for signalling the different types of changes, i.e. one per virtual link and change type.\n For instance, in the case of signalling affected VL instances involving the addition of a particular\n VL instance with links ports, one \"AffectedVirtualLink\" entry signals the addition of the VL by using\n the \"changeType\" attribute of \"AffectedVirtualLink\" structure equal to \"ADDED\", and another\n \"AffectedVirtualLink\" entry signals the addition of VNF link ports of the VL by using the\n \"changeType\" equal to \"LINK_PORT_ADDED\".\n NOTE 3: Not more than one of changedInfo and modificationsTriggeredByVnfPkgChange shall be present.\n", "type": "object", "required": [ - "id", - "notificationType", - "subscriptionId", - "timeStamp", - "notificationStatus", - "operationState", - "vnfInstanceId", - "operation", - "isAutomaticInvocation", - "vnfLcmOpOccId", - "_links" + "id", + "notificationType", + "subscriptionId", + "timeStamp", + "notificationStatus", + "operationState", + "vnfInstanceId", + "operation", + "isAutomaticInvocation", + "vnfLcmOpOccId", + "_links" ], "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "notificationType": { - "description": "Discriminator for the different notification types. Shall be set to \"VnfLcmOperationOccurrenceNotification\" for this notification type.\n", - "type": "string", - "enum": [ - "VnfLcmOperationOccurrenceNotification" - ] - }, - "subscriptionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "timeStamp": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "notificationStatus": { - "description": "Indicates whether this notification reports about the start of a lifecycle operation or the result of a lifecycle operation. Permitted values: * START: Informs about the start of the VNF LCM operation\n occurrence.\n* RESULT: Informs about the final or intermediate result of the VNF\n LCM operation occurrence.\n", - "type": "string", - "enum": [ - "START", - "RESULT" - ] - }, - "operationState": { - "description": "STARTING: The LCM operation is starting. PROCESSING: The LCM operation is currently in execution. COMPLETED: The LCM operation has been completed successfully. FAILED_TEMP: The LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed. FAILED: The LCM operation has failed and it cannot be retried or rolled back, as it is determined that such action won't succeed. ROLLING_BACK: The LCM operation is currently being rolled back. ROLLED_BACK: The LCM operation has been successfully rolled back, i.e. The state of the VNF prior to the original operation invocation has been restored as closely as possible.\n", - "type": "string", - "enum": [ - "STARTING", - "PROCESSING", - "COMPLETED", - "FAILED_TEMP", - "FAILED", - "ROLLING_BACK", - "ROLLED_BACK" - ] - }, - "vnfInstanceId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "operation": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n", - "type": "string", - "enum": [ - "INSTANTIATE", - "SCALE", - "SCALE_TO_LEVEL", - "CHANGE_FLAVOUR", - "TERMINATE", - "HEAL", - "OPERATE", - "CHANGE_EXT_CONN", - "MODIFY_INFO", - "CREATE_SNAPSHOT", - "REVERT_TO_SNAPSHOT", - "CHANGE_VNFPKG" - ] - }, - "isAutomaticInvocation": { - "description": "Set to true if this VNF LCM operation occurrence has been triggered by an automated procedure inside the VNFM (i.e. ScaleVnf / ScaleVnfToLevel triggered by auto-scale, or HealVnf triggered by auto-heal). Set to false otherwise.\n", - "type": "boolean" - }, - "verbosity": { - "description": "The enumeration LcmOpOccNotificationVerbosityType provides values to control the verbosity of LCM operation occurrence notifications. * FULL: This signals a full notification which contains all change details. * SHORT: This signals a short notification which omits large-volume change details to reduce the size of data to\n be sent via the notification mechanism.\n", - "type": "string", - "enum": [ - "FULL", - "SHORT" - ] - }, - "vnfLcmOpOccId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "affectedVnfcs": { - "description": "Information about VNFC instances that were affected during the lifecycle operation. See note 1.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted, modified and temporary VNFCs.\n", - "type": "object", - "required": [ - "id", - "vduId", - "changeType", - "computeResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vduId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVnfc structure exists as long as the temporary resource exists.\n", - "type": "string", - "enum": [ - "ADDED", - "REMOVED", - "MODIFIED", - "TEMPORARY" - ] - }, - "computeResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "notificationType": { + "description": "Discriminator for the different notification types. Shall be set to \"VnfLcmOperationOccurrenceNotification\" for this notification type.\n", + "type": "string", + "enum": [ + "VnfLcmOperationOccurrenceNotification" + ] + }, + "subscriptionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "timeStamp": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "notificationStatus": { + "description": "Indicates whether this notification reports about the start of a lifecycle operation or the result of a lifecycle operation. Permitted values: * START: Informs about the start of the VNF LCM operation\n occurrence.\n* RESULT: Informs about the final or intermediate result of the VNF\n LCM operation occurrence.\n", + "type": "string", + "enum": [ + "START", + "RESULT" + ] + }, + "operationState": { + "description": "STARTING: The LCM operation is starting. PROCESSING: The LCM operation is currently in execution. COMPLETED: The LCM operation has been completed successfully. FAILED_TEMP: The LCM operation has failed and execution has stopped, but the execution of the operation is not considered to be closed. FAILED: The LCM operation has failed and it cannot be retried or rolled back, as it is determined that such action won't succeed. ROLLING_BACK: The LCM operation is currently being rolled back. ROLLED_BACK: The LCM operation has been successfully rolled back, i.e. The state of the VNF prior to the original operation invocation has been restored as closely as possible.\n", + "type": "string", + "enum": [ + "STARTING", + "PROCESSING", + "COMPLETED", + "FAILED_TEMP", + "FAILED", + "ROLLING_BACK", + "ROLLED_BACK" + ] + }, + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "operation": { + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n", + "type": "string", + "enum": [ + "INSTANTIATE", + "SCALE", + "SCALE_TO_LEVEL", + "CHANGE_FLAVOUR", + "TERMINATE", + "HEAL", + "OPERATE", + "CHANGE_EXT_CONN", + "MODIFY_INFO", + "CREATE_SNAPSHOT", + "REVERT_TO_SNAPSHOT", + "CHANGE_VNFPKG" + ] + }, + "isAutomaticInvocation": { + "description": "Set to true if this VNF LCM operation occurrence has been triggered by an automated procedure inside the VNFM (i.e. ScaleVnf / ScaleVnfToLevel triggered by auto-scale, or HealVnf triggered by auto-heal). Set to false otherwise.\n", + "type": "boolean" + }, + "verbosity": { + "description": "The enumeration LcmOpOccNotificationVerbosityType provides values to control the verbosity of LCM operation occurrence notifications. * FULL: This signals a full notification which contains all change details. * SHORT: This signals a short notification which omits large-volume change details to reduce the size of data to\n be sent via the notification mechanism.\n", + "type": "string", + "enum": [ + "FULL", + "SHORT" + ] + }, + "vnfLcmOpOccId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "affectedVnfcs": { + "description": "Information about VNFC instances that were affected during the lifecycle operation. See note 1.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted, modified and temporary VNFCs.\n", + "type": "object", + "required": [ + "id", + "vduId", + "changeType", + "computeResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "affectedVnfcCpIds": { - "description": "Identifiers of CP(s) of the VNFC instance that were affected by the change. Shall be present for those affected CPs of the VNFC instance that are associated to an external CP of the VNF instance. May be present for further affected CPs of the VNFC instance.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - }, - "addedStorageResourceIds": { - "description": "References to VirtualStorage resources that have been added. Each value refers to a VirtualStorageResourceInfo item in the VnfInstance that was added to the VNFC. It shall be provided if at least one storage resource was added to the VNFC.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - }, - "removedStorageResourceIds": { - "description": "References to VirtualStorage resources that have been removed. The value contains the identifier of a VirtualStorageResourceInfo item that has been removed from the VNFC, and might no longer exist in the VnfInstance. It shall be provided if at least one storage resource was removed from the VNFC.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - } - } - } - }, - "affectedVirtualLinks": { - "description": "Information about VL instances that were affected during the lifecycle operation. See note 1 and note 2.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted, modified and temporary VLs, and added or removed VNF link ports.\nNOTE:\tWhen signalling the addition (LINK_PORT_ADDED) or removal (LINK_PORT_REMOVED) of VNF link ports, \n the \"networkResource\" attribute refers to the affected virtual link instance, not the link port \n instance. The resource handles of the affected VNF link ports can be found by dereferencing the \n identifiers in the \"vnfLinkPortIds\" attribute.\n", - "type": "object", - "required": [ - "id", - "vnfVirtualLinkDescId", - "changeType", - "networkResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfVirtualLinkDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY * LINK_PORT_ADDED * LINK_PORT_REMOVED For a temporary resource, an AffectedVirtualLink structure exists as long as the temporary resource exists. When signalling the addition (LINK_PORT_ADDED) or removal (LINK_PORT_REMOVED) of VNF link ports, the \"networkResource\" attribute refers to the affected virtual link instance, not the link port instance. The resource handles of the affected VNF link ports can be found by dereferencing the identifiers in the \"vnfLinkPortIds\" attribute.\n", - "type": "string", - "enum": [ - "ADDED", - "REMOVED", - "MODIFIED", - "TEMPORARY", - "LINK_PORT_ADDED", - "LINK_PORT_REMOVED" - ] - }, - "networkResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource or Network MCIO that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVnfc structure exists as long as the temporary resource exists.\n", + "type": "string", + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED", + "TEMPORARY" + ] }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" + "computeResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "affectedVnfcCpIds": { + "description": "Identifiers of CP(s) of the VNFC instance that were affected by the change. Shall be present for those affected CPs of the VNFC instance that are associated to an external CP of the VNF instance. May be present for further affected CPs of the VNFC instance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + "addedStorageResourceIds": { + "description": "References to VirtualStorage resources that have been added. Each value refers to a VirtualStorageResourceInfo item in the VnfInstance that was added to the VNFC. It shall be provided if at least one storage resource was added to the VNFC.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "removedStorageResourceIds": { + "description": "References to VirtualStorage resources that have been removed. The value contains the identifier of a VirtualStorageResourceInfo item that has been removed from the VNFC, and might no longer exist in the VnfInstance. It shall be provided if at least one storage resource was removed from the VNFC.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" } - } - }, - "vnfLinkPortIds": { - "description": "Identifiers of the link ports of the affected VL related to the change. Each identifier references a \"VnfLinkPortInfo\" structure.\nShall be set when changeType is equal to \"LINK_PORT_ADDED\" or \"LINK_PORT_REMOVED\", and the related \"VnfLinkPortInfo\" structures are present (case \"added\") or have been present (case \"removed\") in the \"VnfVirtualLinkResourceInfo\" or \"ExtManagedVirtualLinkInfo\" structures that are represented by the \"vnfVirtualLinkResourceInfo\" or \"extManagedVirtualLinkInfo\" attribute in the \"VnfInstance\" structure. See note.\n", - "type": "array", - "items": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" } - } - } - }, - "affectedExtLinkPorts": { - "description": "Information about external VNF link ports that were affected during the lifecycle operation. See note 1.\n", - "type": "array", - "items": { - "description": "This type provides information about added and deleted external link ports (link ports attached to external virtual links).\n", - "type": "object", - "required": [ - "id", - "changeType", - "extCpInstanceId", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of change. Permitted values: -\tADDED - MODIFIED -\tREMOVED\n", - "type": "string", - "enum": [ - "ADDED", - "MODIFIED", - "REMOVED" - ] - }, - "extCpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" + }, + "affectedVirtualLinks": { + "description": "Information about VL instances that were affected during the lifecycle operation. See note 1 and note 2.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted, modified and temporary VLs, and added or removed VNF link ports.\nNOTE:\tWhen signalling the addition (LINK_PORT_ADDED) or removal (LINK_PORT_REMOVED) of VNF link ports, \n the \"networkResource\" attribute refers to the affected virtual link instance, not the link port \n instance. The resource handles of the affected VNF link ports can be found by dereferencing the \n identifiers in the \"vnfLinkPortIds\" attribute.\n", + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "changeType", + "networkResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" + "changeType": { + "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY * LINK_PORT_ADDED * LINK_PORT_REMOVED For a temporary resource, an AffectedVirtualLink structure exists as long as the temporary resource exists. When signalling the addition (LINK_PORT_ADDED) or removal (LINK_PORT_REMOVED) of VNF link ports, the \"networkResource\" attribute refers to the affected virtual link instance, not the link port instance. The resource handles of the affected VNF link ports can be found by dereferencing the identifiers in the \"vnfLinkPortIds\" attribute.\n", + "type": "string", + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED", + "TEMPORARY", + "LINK_PORT_ADDED", + "LINK_PORT_REMOVED" + ] }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource or Network MCIO that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "vnfLinkPortIds": { + "description": "Identifiers of the link ports of the affected VL related to the change. Each identifier references a \"VnfLinkPortInfo\" structure.\nShall be set when changeType is equal to \"LINK_PORT_ADDED\" or \"LINK_PORT_REMOVED\", and the related \"VnfLinkPortInfo\" structures are present (case \"added\") or have been present (case \"removed\") in the \"VnfVirtualLinkResourceInfo\" or \"ExtManagedVirtualLinkInfo\" structures that are represented by the \"vnfVirtualLinkResourceInfo\" or \"extManagedVirtualLinkInfo\" attribute in the \"VnfInstance\" structure. See note.\n", + "type": "array", + "items": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" } - } } - } - } - }, - "affectedVirtualStorages": { - "description": "Information about virtualised storage instances that were affected during the lifecycle operation. See note 1.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted, modified and temporary virtual storage resources.\n", - "type": "object", - "required": [ - "id", - "virtualStorageDescId", - "changeType", - "storageResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "virtualStorageDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVirtualStorage structure exists as long as the temporary resource exists.\n", - "type": "string", - "enum": [ - "ADDED", - "REMOVED", - "MODIFIED", - "TEMPORARY" - ] - }, - "storageResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource or Storage MCIO that is used by a VNF instance. Information about the resource is available from the VIM or the CISM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" + }, + "affectedExtLinkPorts": { + "description": "Information about external VNF link ports that were affected during the lifecycle operation. See note 1.\n", + "type": "array", + "items": { + "description": "This type provides information about added and deleted external link ports (link ports attached to external virtual links).\n", + "type": "object", + "required": [ + "id", + "changeType", + "extCpInstanceId", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" + "changeType": { + "description": "Signals the type of change. Permitted values: -\tADDED - MODIFIED -\tREMOVED\n", + "type": "string", + "enum": [ + "ADDED", + "MODIFIED", + "REMOVED" + ] }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + "extCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" } - } - } - }, - "changedInfo": { - "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource. The attributes that can be included consist of those requested to be modified explicitly in the \"VnfInfoModificationRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly e.g. when modifying the referenced VNF package. * NOTE:\tIf present, this attribute (which depends on the value of the \"vnfdId\" attribute)\n was modified implicitly following a request to modify the \"vnfdId\" attribute, by\n copying the value of this attribute from the VNFD in the VNF Package identified\n by the \"vnfdId\" attribute.\n", - "type": "object", - "properties": { - "vnfInstanceName": { - "description": "If present, this attribute signals modifications of the \"vnfInstanceName\" attribute in \"VnfInstance\" as defined in clause 5.5.2.12..\n", - "type": "string" - }, - "vnfInstanceDescription": { - "description": "If present, this attribute signals modifications of the \"vnfInstanceDescription\" attribute in \"VnfInstance\", as defined in clause 5.5.2.12..\n", - "type": "string" - }, - "vnfConfigurableProperties": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "extensions": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfProvider": { - "description": "If present, this attribute signals modifications of the \"vnfProvider\" attribute in \"VnfInstance\". See note.\n", - "type": "string" - }, - "vnfProductName": { - "description": "If present, this attribute signals modifications of the \"vnfProductName\" attribute in \"VnfInstance\". See note.\n", - "type": "string" - }, - "vnfSoftwareVersion": { - "description": "A version.\n", - "type": "string" - }, - "vnfdVersion": { - "description": "A version.\n", - "type": "string" - }, - "vnfcInfoModifications": { - "description": "If present, this attribute signals modifications of certain entries in the \"vnfcInfo\" attribute array in the \"instantiatedVnfInfo\" attribute of \"VnfInstance\", as defined in clause 5.5.2.12.\n", + }, + "affectedVirtualStorages": { + "description": "Information about virtualised storage instances that were affected during the lifecycle operation. See note 1.\n", "type": "array", "items": { - "description": "This type represents modifications of an entry in an array of \"VnfcInfo\" objects. * NOTE:\tThe attribute \"id\" in this data type represents the same identifier as the attribute\n \"vnfcInstanceId\" in other related data types in the present document. For reasons of backward\n compatibility, this misalignment is not corrected.\n", - "type": "object", - "required": [ - "id", - "vnfcConfigurableProperties" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfcConfigurableProperties": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" + "description": "This type provides information about added, deleted, modified and temporary virtual storage resources.\n", + "type": "object", + "required": [ + "id", + "virtualStorageDescId", + "changeType", + "storageResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "virtualStorageDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "changeType": { + "description": "Signals the type of change. Permitted values: * ADDED * REMOVED * MODIFIED * TEMPORARY For a temporary resource, an AffectedVirtualStorage structure exists as long as the temporary resource exists.\n", + "type": "string", + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED", + "TEMPORARY" + ] + }, + "storageResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource or Storage MCIO that is used by a VNF instance. Information about the resource is available from the VIM or the CISM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } } - } - } - } - } - }, - "affectedVipCps": { - "description": "Information about virtual IP CP instances that were affected during the execution of the lifecycle management operation, if this notification represents the result of a lifecycle management operation occurrence. Shall be present if the \"notificationStatus\" is set to \"RESULT\", the \"verbosity\" attribute is set to \"FULL\" and the operation has made any changes to the Virtual IP CP instances of the VNF instance. Shall be absent otherwise. Only information about virtual IP CP instances that have been added, deleted or modified shall be provided.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted and modified virtual IP CP instances.\n", - "type": "object", - "required": [ - "cpInstanceId", - "cpdId", - "changeType" - ], - "properties": { - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of change. Permitted values: -\tADDED -\tREMOVED -\tMODIFIED\n", - "type": "string", - "enum": [ - "ADDED", - "REMOVED", - "MODIFIED" - ] - } - } - } - }, - "affectedVirtualCps": { - "description": "Information about virtual CP instances that were affected during the execution of the lifecycle management operation, if this notification represents the result of a lifecycle management operation occurrence.\nShall be present if the \"notificationStatus\" is set to \"RESULT\", the \"verbosity\" attribute is set to \"FULL\" and the operation has made any changes to the virtual CP instances of the VNF instance. Shall be absent otherwise. Only information about virtual CP instances that have been added, deleted or modified shall be provided.\n", - "type": "array", - "items": { - "description": "This type provides information about added, deleted and modified virtual CP instances.\n", - "type": "object", - "required": [ - "cpInstanceId", - "cpdId", - "changeType" - ], - "properties": { - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "changeType": { - "description": "Signals the type of change.\nPermitted values:\n - ADDED\n - REMOVED\n - MODIFIED\n", - "type": "string", - "enum": [ - "ADDED", - "REMOVED", - "MODIFIED" - ] } - } - } - }, - "affectedCertificates": { - "description": "Information about certificate content that were affected during the execution of the lifecycle management operation, if this notification represents the result of a lifecycle management operation occurrence. Shall be present when using delegation mode, otherwise shall be absent. This attribute shall be supported when delegation mode in certificate management is applicable\n", - "type": "array", - "items": { - "description": "This type provides input information about added, deleted, and modified certificate contents.\n", + }, + "changedInfo": { + "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource. The attributes that can be included consist of those requested to be modified explicitly in the \"VnfInfoModificationRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly e.g. when modifying the referenced VNF package. * NOTE:\tIf present, this attribute (which depends on the value of the \"vnfdId\" attribute)\n was modified implicitly following a request to modify the \"vnfdId\" attribute, by\n copying the value of this attribute from the VNFD in the VNF Package identified\n by the \"vnfdId\" attribute.\n", "type": "object", - "required": [ - "certificateInfoId", - "changeType" - ], "properties": { - "certificateInfoId": { - "description": "An identifier with the intention of being globally unique.\n", + "vnfInstanceName": { + "description": "If present, this attribute signals modifications of the \"vnfInstanceName\" attribute in \"VnfInstance\" as defined in clause 5.5.2.12..\n", "type": "string" }, - "certificateBaseProfileId": { - "description": "An identifier with the intention of being globally unique.\n", + "vnfInstanceDescription": { + "description": "If present, this attribute signals modifications of the \"vnfInstanceDescription\" attribute in \"VnfInstance\", as defined in clause 5.5.2.12..\n", "type": "string" }, - "securityPolicyId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" }, - "cmfInfoId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" }, - "certificateContentId": { + "vnfdId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "changeType": { - "description": "Signals the type of change.", - "type": "string", - "enum": [ - "ADD", - "REMOVE", - "MODIFY" - ] - } - } - } - }, - "changedExtConnectivity": { - "description": "Information about changed external connectivity, if this notification represents the result of a lifecycle operation occurrence. Shall be present if the \"notificationStatus\" is set to \"RESULT\" and the \"operation\" has made any change of the external connectivity of the VNF instance. Shall be absent otherwise.\n", - "type": "array", - "items": { - "description": "This type represents information about an external VL.\nNOTE:\tThis attribute reflects the current configuration information that has resulted from merging into this attribute \n the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the \n most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" \n or \"ChangeCurrentVnfPkgRequest\", or in the Grant response. If applying such change results in an empty list of \n \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its \n parent data structure.\n", - "type": "object", - "required": [ - "id", - "resourceHandle", - "currentVnfExtCpData" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "vnfProvider": { + "description": "If present, this attribute signals modifications of the \"vnfProvider\" attribute in \"VnfInstance\". See note.\n", + "type": "string" }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "vnfProductName": { + "description": "If present, this attribute signals modifications of the \"vnfProductName\" attribute in \"VnfInstance\". See note.\n", + "type": "string" }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" + "vnfSoftwareVersion": { + "description": "A version.\n", + "type": "string" }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" + "vnfdVersion": { + "description": "A version.\n", + "type": "string" }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" + "vnfcInfoModifications": { + "description": "If present, this attribute signals modifications of certain entries in the \"vnfcInfo\" attribute array in the \"instantiatedVnfInfo\" attribute of \"VnfInstance\", as defined in clause 5.5.2.12.\n", + "type": "array", + "items": { + "description": "This type represents modifications of an entry in an array of \"VnfcInfo\" objects. * NOTE:\tThe attribute \"id\" in this data type represents the same identifier as the attribute\n \"vnfcInstanceId\" in other related data types in the present document. For reasons of backward\n compatibility, this misalignment is not corrected.\n", + "type": "object", + "required": [ + "id", + "vnfcConfigurableProperties" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfcConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + } + } + }, + "affectedVipCps": { + "description": "Information about virtual IP CP instances that were affected during the execution of the lifecycle management operation, if this notification represents the result of a lifecycle management operation occurrence. Shall be present if the \"notificationStatus\" is set to \"RESULT\", the \"verbosity\" attribute is set to \"FULL\" and the operation has made any changes to the Virtual IP CP instances of the VNF instance. Shall be absent otherwise. Only information about virtual IP CP instances that have been added, deleted or modified shall be provided.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted and modified virtual IP CP instances.\n", + "type": "object", + "required": [ + "cpInstanceId", + "cpdId", + "changeType" + ], + "properties": { + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + "changeType": { + "description": "Signals the type of change. Permitted values: -\tADDED -\tREMOVED -\tMODIFIED\n", + "type": "string", + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED" + ] } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" } - } - }, - "extLinkPorts": { - "description": "Link ports of this VL.\n", - "type": "array", - "items": { - "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\nNOTE 1:\tThe use cases UC#4 and UC#5 in clause A.4 of ETSI GS NFV-IFA 007 provide examples for such a configuration. NOTE 2:\tThe value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\" attribute.\n", + } + }, + "affectedVirtualCps": { + "description": "Information about virtual CP instances that were affected during the execution of the lifecycle management operation, if this notification represents the result of a lifecycle management operation occurrence.\nShall be present if the \"notificationStatus\" is set to \"RESULT\", the \"verbosity\" attribute is set to \"FULL\" and the operation has made any changes to the virtual CP instances of the VNF instance. Shall be absent otherwise. Only information about virtual CP instances that have been added, deleted or modified shall be provided.\n", + "type": "array", + "items": { + "description": "This type provides information about added, deleted and modified virtual CP instances.\n", "type": "object", "required": [ - "id", - "resourceHandle" + "cpInstanceId", + "cpdId", + "changeType" ], "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "resourceProviderId": { + }, + "changeType": { + "description": "Signals the type of change.\nPermitted values:\n - ADDED\n - REMOVED\n - MODIFIED\n", + "type": "string", + "enum": [ + "ADDED", + "REMOVED", + "MODIFIED" + ] + } + } + } + }, + "affectedCertificates": { + "description": "Information about certificate content that were affected during the execution of the lifecycle management operation, if this notification represents the result of a lifecycle management operation occurrence. Shall be present when using delegation mode, otherwise shall be absent. This attribute shall be supported when delegation mode in certificate management is applicable\n", + "type": "array", + "items": { + "description": "This type provides input information about added, deleted, and modified certificate contents.\n", + "type": "object", + "required": [ + "certificateInfoId", + "changeType" + ], + "properties": { + "certificateInfoId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + }, + "certificateBaseProfileId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + }, + "securityPolicyId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + }, + "cmfInfoId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" - } + }, + "changeType": { + "description": "Signals the type of change.", + "type": "string", + "enum": [ + "ADD", + "REMOVE", + "MODIFY" + ] } - }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "secondaryCpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "trunkResourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - } } - } - }, - "currentVnfExtCpData": { - "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", - "type": "array", - "items": { - "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n", + } + }, + "changedExtConnectivity": { + "description": "Information about changed external connectivity, if this notification represents the result of a lifecycle operation occurrence. Shall be present if the \"notificationStatus\" is set to \"RESULT\" and the \"operation\" has made any change of the external connectivity of the VNF instance. Shall be absent otherwise.\n", + "type": "array", + "items": { + "description": "This type represents information about an external VL.\nNOTE:\tThis attribute reflects the current configuration information that has resulted from merging into this attribute \n the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the \n most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" \n or \"ChangeCurrentVnfPkgRequest\", or in the Grant response. If applying such change results in an empty list of \n \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its \n parent data structure.\n", "type": "object", "required": [ - "cpdId" + "id", + "resourceHandle", + "currentVnfExtCpData" ], "properties": { - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "cpConfig": { - "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3 and 4.\n", - "type": "object", - "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the\n \"resourceHandle\" attribute in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", - "anyOf": [ - { - "required": [ - "linkPortId" - ] - }, - { - "required": [ - "cpProtocolData" - ] - }, - { - "required": [ - "netAttDefResourceId" - ] + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } } - ], - "type": "object", - "properties": { - "parentCpConfigId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "linkPortId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "createExtLinkPort": { - "description": "Indicates to the VNFM the need to create a dedicated link port for the external CP. If set to True, the VNFM shall create a link port. If set to False, the VNFM shall not create a link port. This attribute is only applicable for external CP instances without a floating IP address that expose a VIP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", - "type": "boolean" - }, - "cpProtocolData": { - "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. See notes 1 and 2.\n", - "type": "array", - "items": { - "description": "This type represents network protocol data. * NOTE:\tThis attribute allows to signal the addition of further types of layer and protocol\n in future versions of the present document in a backwards-compatible way. In the current\n version of the present document, only IP over Ethernet is supported.\n", + }, + "extLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\nNOTE 1:\tThe use cases UC#4 and UC#5 in clause A.4 of ETSI GS NFV-IFA 007 provide examples for such a configuration. NOTE 2:\tThe value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\" attribute.\n", "type": "object", "required": [ - "layerProtocol" + "id", + "resourceHandle" ], "properties": { - "layerProtocol": { - "description": "Identifier of layer(s) and protocol(s). Permitted values:\n - IP_OVER_ETHERNET.\n - IP_FOR_VIRTUAL_CP\nSee note\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET", - "IP_FOR_VIRTUAL_CP" - ] - }, - "ipOverEthernet": { - "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI's transport technology.\n", - "type": "object", - "anyOf": [ - { - "required": [ - "macAddress" - ] - }, - { - "required": [ - "ipAddresses" - ] - } - ], - "oneOf": [ - { - "required": [ - "fixedAddresses" - ] - }, - { - "required": [ - "numDynamicAddresses" - ] - }, - { - "required": [ - "ipAddressRange" - ] - } - ], - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "segmentationType": { - "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values: -\tVLAN: the subport uses VLAN as encapsulation type. -\tINHERIT: the subport gets its segmentation type from the network itΓÇÖs connected to. This attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", - "type": "string", - "enum": [ - "VLAN", - "INHERIT" - ] - }, - "segmentationId": { - "description": "Identification of the network segment to which the CP instance connects to. See note 3 and note 4.\n", + "id": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "ipAddresses": { - "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned. See note 1.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" }, - "fixedAddresses": { - "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" }, - "numDynamicAddresses": { - "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", - "type": "integer" + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" }, - "addressRange": { - "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used. See note 2.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + } } - } }, - "subnetId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" } - } } - } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "secondaryCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "trunkResourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" } - }, - "virtualCpAddress": { - "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for Kubernetes® that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp and the addressPoolName attributes shall not be present at the same time.\n", - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "loadBalancerIp": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + } + } + }, + "currentVnfExtCpData": { + "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", + "type": "array", + "items": { + "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n", + "type": "object", + "required": [ + "cpdId" + ], + "properties": { + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", "type": "string" - } + }, + "cpConfig": { + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3 and 4.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the\n \"resourceHandle\" attribute in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "anyOf": [ + { + "required": [ + "linkPortId" + ] + }, + { + "required": [ + "cpProtocolData" + ] + }, + { + "required": [ + "netAttDefResourceId" + ] + } + ], + "type": "object", + "properties": { + "parentCpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "linkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "createExtLinkPort": { + "description": "Indicates to the VNFM the need to create a dedicated link port for the external CP. If set to True, the VNFM shall create a link port. If set to False, the VNFM shall not create a link port. This attribute is only applicable for external CP instances without a floating IP address that expose a VIP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", + "type": "boolean" + }, + "cpProtocolData": { + "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. See notes 1 and 2.\n", + "type": "array", + "items": { + "description": "This type represents network protocol data. * NOTE:\tThis attribute allows to signal the addition of further types of layer and protocol\n in future versions of the present document in a backwards-compatible way. In the current\n version of the present document, only IP over Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "Identifier of layer(s) and protocol(s). Permitted values:\n - IP_OVER_ETHERNET.\n - IP_FOR_VIRTUAL_CP\nSee note\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI's transport technology.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "ipAddressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationType": { + "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values: -\tVLAN: the subport uses VLAN as encapsulation type. -\tINHERIT: the subport gets its segmentation type from the network itΓÇÖs connected to. This attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", + "type": "string", + "enum": [ + "VLAN", + "INHERIT" + ] + }, + "segmentationId": { + "description": "Identification of the network segment to which the CP instance connects to. See note 3 and note 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "fixedAddresses": { + "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "numDynamicAddresses": { + "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "integer" + }, + "addressRange": { + "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used. See note 2.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + }, + "virtualCpAddress": { + "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for Kubernetes® that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp and the addressPoolName attributes shall not be present at the same time.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "type": "string" + } + } + } + } + } + }, + "netAttDefResourceId": { + "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + } + } + } + } + }, + "extNetAttDefResource": { + "description": "Network attachment definition resources that provide the specification of the interface to attach connection points to this VL.\n", + "type": "array", + "items": { + "description": "This type contains information related to a network attachment definition resource that provides the specification of the interface used to connect one or multiple connection points to a secondary container cluster network.\n", + "type": "object", + "required": [ + "netAttDefResourceInfoId", + "netAttDefResource" + ], + "properties": { + "netAttDefResourceInfoId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "netAttDefResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "associatedExtCpId": { + "description": "Identifier of the external CP associated to this network attachment definition resource. Shall be present when the network attachment definition resource is used for external connectivity by the VNF.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "associatedVnfcCpId": { + "description": "Identifier of the VNFC CP associated to this network attachment definition resource. May be present when the network attachment definition resource is used for internal connectivity by the VNF.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } } - } } - } - }, - "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } } - } } - } } - } - }, - "extNetAttDefResource": { - "description": "Network attachment definition resources that provide the specification of the interface to attach connection points to this VL.\n", - "type": "array", - "items": { - "description": "This type contains information related to a network attachment definition resource that provides the specification of the interface used to connect one or multiple connection points to a secondary container cluster network.\n", - "type": "object", - "required": [ - "netAttDefResourceInfoId", - "netAttDefResource" - ], - "properties": { - "netAttDefResourceInfoId": { + } + }, + "modificationsTriggeredByVnfPkgChange": { + "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource when changing the current VNF package. The attributes that can be included consist of those requested to be modified explicitly in the \"ChangeCurrentVnfPkgRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly during the operation.\nNOTE 1:\tThis attribute represents the delta (semantics as per IETF RFC 7396, JSON Merge Patch) between the value \n of the attribute at the start of the \"Change current VNF package\" operation and the value of the attribute \n at its completion.\nNOTE 2:\tIf present, this attribute (which depends on the value of the \"vnfdId\" attribute) was modified implicitly \n during the related operation and contains a copy of the value of the related attribute from the VNFD in the \n VNF Package identified by the \"vnfdId\" attribute.\n", + "type": "object", + "properties": { + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "vnfdId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "netAttDefResource": { - "required": [ - "resourceId" - ], + }, + "vnfProvider": { + "description": "If present, this attribute signals the new value of the \"vnfProvider\" attribute in \"VnfInstance\". See note 2.\n", + "type": "string" + }, + "vnfProductName": { + "description": "If present, this attribute signals the new value of the \"vnfProductName\" attribute in \"VnfInstance\". See note 2.\n", + "type": "string" + }, + "vnfSoftwareVersion": { + "description": "A version.\n", + "type": "string" + }, + "vnfdVersion": { + "description": "A version.\n", + "type": "string" + }, + "vimConnectionInfo": { + "description": "If present, this attribute signals the changes to VIM connection info that were passed in the related \"ChangeCurrentVnfPkgRequest\" structure. The provisions for sensitive information defined in clause 4.4.1.6 apply.\n", "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "additionalProperties": { + "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-relate dparameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM., CISM, CIR or MCIOP repository.\n", "type": "object", + "required": [ + "vimType" + ], "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" - } + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vimType": { + "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "associatedExtCpId": { - "description": "Identifier of the external CP associated to this network attachment definition resource. Shall be present when the network attachment definition resource is used for external connectivity by the VNF.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - }, - "associatedVnfcCpId": { - "description": "Identifier of the VNFC CP associated to this network attachment definition resource. May be present when the network attachment definition resource is used for internal connectivity by the VNF.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" } - } } - } } - } - } - }, - "modificationsTriggeredByVnfPkgChange": { - "description": "This type represents attribute modifications that were performed on an \"Individual VNF instance\" resource when changing the current VNF package. The attributes that can be included consist of those requested to be modified explicitly in the \"ChangeCurrentVnfPkgRequest\" data structure, and additional attributes of the \"VnfInstance\" data structure that were modified implicitly during the operation.\nNOTE 1:\tThis attribute represents the delta (semantics as per IETF RFC 7396, JSON Merge Patch) between the value \n of the attribute at the start of the \"Change current VNF package\" operation and the value of the attribute \n at its completion.\nNOTE 2:\tIf present, this attribute (which depends on the value of the \"vnfdId\" attribute) was modified implicitly \n during the related operation and contains a copy of the value of the related attribute from the VNFD in the \n VNF Package identified by the \"vnfdId\" attribute.\n", - "type": "object", - "properties": { - "vnfConfigurableProperties": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "extensions": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfProvider": { - "description": "If present, this attribute signals the new value of the \"vnfProvider\" attribute in \"VnfInstance\". See note 2.\n", - "type": "string" - }, - "vnfProductName": { - "description": "If present, this attribute signals the new value of the \"vnfProductName\" attribute in \"VnfInstance\". See note 2.\n", - "type": "string" - }, - "vnfSoftwareVersion": { - "description": "A version.\n", - "type": "string" - }, - "vnfdVersion": { - "description": "A version.\n", - "type": "string" - }, - "vimConnectionInfo": { - "description": "If present, this attribute signals the changes to VIM connection info that were passed in the related \"ChangeCurrentVnfPkgRequest\" structure. The provisions for sensitive information defined in clause 4.4.1.6 apply.\n", + }, + "error": { + "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807, the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807.\n", "type": "object", - "additionalProperties": { - "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-relate dparameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM., CISM, CIR or MCIOP repository.\n", - "type": "object", - "required": [ - "vimType" - ], - "properties": { - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "required": [ + "status", + "detail" + ], + "properties": { + "type": { + "description": "A URI reference according to IETF RFC 3986 that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", + "type": "string", + "format": "URI" }, - "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", - "type": "string" + "title": { + "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", + "type": "string" }, - "interfaceInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" + "status": { + "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", + "type": "integer" }, - "accessInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" + "detail": { + "description": "A human-readable explanation specific to this occurrence of the problem.\n", + "type": "string" }, - "extra": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" + "instance": { + "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", + "type": "string", + "format": "URI" } - } - } - } - } - }, - "error": { - "description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807, the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807.\n", - "type": "object", - "required": [ - "status", - "detail" - ], - "properties": { - "type": { - "description": "A URI reference according to IETF RFC 3986 that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n", - "type": "string", - "format": "URI" - }, - "title": { - "description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type. It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n", - "type": "string" - }, - "status": { - "description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n", - "type": "integer" - }, - "detail": { - "description": "A human-readable explanation specific to this occurrence of the problem.\n", - "type": "string" - }, - "instance": { - "description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n", - "type": "string", - "format": "URI" - } - } - }, - "_links": { - "description": "This type represents the links to resources that a notification can contain.\n", - "type": "object", - "required": [ - "vnfInstance", - "subscription" - ], - "properties": { - "vnfInstance": { - "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "subscription": { - "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } } - }, - "vnfLcmOpOcc": { - "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + }, + "_links": { + "description": "This type represents the links to resources that a notification can contain.\n", "type": "object", "required": [ - "href" + "vnfInstance", + "subscription" ], "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } + "vnfInstance": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "subscription": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "vnfLcmOpOcc": { + "description": "This type represents a link to a resource in a notification, using an absolute or relative URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } } - } } - } } - } \ No newline at end of file +} \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json index 4c54facb..01d7ccd2 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json @@ -2,2615 +2,2615 @@ "description": "This type represents an individual VNF snapshot resource.\n", "type": "object", "required": [ - "id" + "id" ], "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfSnapshotPkgId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfSnapshot": { - "description": "This type represents a VNF snapshot.\n", - "type": "object", - "required": [ - "id", - "vnfInstanceId", - "creationStartedAt", - "vnfdId", - "vnfInstance", - "vnfcSnapshots" - ], - "properties": { - "id": { + "id": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "vnfInstanceId": { + }, + "vnfSnapshotPkgId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "creationStartedAt": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "creationFinishedAt": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfInstance": { - "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tVNF configurable properties are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n", + }, + "vnfSnapshot": { + "description": "This type represents a VNF snapshot.\n", "type": "object", "required": [ - "id", - "vnfdId", - "vnfProvider", - "vnfProductName", - "vnfSoftwareVersion", - "vnfdVersion", - "instantiationState", - "_links" + "id", + "vnfInstanceId", + "creationStartedAt", + "vnfdId", + "vnfInstance", + "vnfcSnapshots" ], "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfInstanceName": { - "description": "Name of the VNF instance. This attribute can be modified with the PATCH method.\n", - "type": "string" - }, - "vnfInstanceDescription": { - "description": "Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfProvider": { - "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n", - "type": "string" - }, - "vnfProductName": { - "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n", - "type": "string" - }, - "vnfSoftwareVersion": { - "description": "A version.\n", - "type": "string" - }, - "vnfdVersion": { - "description": "A version.\n", - "type": "string" - }, - "vnfConfigurableProperties": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "instantiationState": { - "description": "The instantiation state of the VNF.\n", - "type": "string", - "enum": [ - "NOT_INSTANTIATED", - "INSTANTIATED" - ] - }, - "instantiatedVnfInfo": { - "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n", - "type": "object", - "required": [ - "flavourId", - "vnfState", - "extCpInfo" - ], - "properties": { - "flavourId": { - "description": "An identifier that is unique within a VNF descriptor.\n", + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstanceId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "vnfState": { - "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n", + }, + "creationStartedAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", "type": "string", - "enum": [ - "STARTED", - "STOPPED" - ] - }, - "scaleStatus": { - "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect. This attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling.\n", - "type": "array", - "items": { - "description": "This type represents the scale level of a VNF instance related to a scaling aspect.\n", - "type": "object", - "required": [ - "aspectId", - "scaleLevel" - ], - "properties": { - "aspectId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" + "format": "date-time" + }, + "creationFinishedAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfInstance": { + "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tVNF configurable properties are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n", + "type": "object", + "required": [ + "id", + "vnfdId", + "vnfProvider", + "vnfProductName", + "vnfSoftwareVersion", + "vnfdVersion", + "instantiationState", + "_links" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" }, - "vnfdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" + "vnfInstanceName": { + "description": "Name of the VNF instance. This attribute can be modified with the PATCH method.\n", + "type": "string" }, - "scaleToLevel": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - } - } - }, - "maxScaleLevels": { - "description": "Maximum allowed scale levels of the VNF, one entry per aspect. This attribute shall be present if the VNF supports scaling.\n", - "type": "array", - "items": { - "description": "This type represents the scale level of a VNF instance related to a scaling aspect.\n", - "type": "object", - "required": [ - "aspectId", - "scaleLevel" - ], - "properties": { - "aspectId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" + "vnfInstanceDescription": { + "description": "Human-readable description of the VNF instance. This attribute can be modified with the PATCH method.\n", + "type": "string" }, "vnfdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" }, - "scaleToLevel": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - } - } - }, - "extCpInfo": { - "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", - "type": "array", - "minItems": 1, - "items": { - "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n ΓÇ£extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", - "type": "object", - "required": [ - "id", - "cpdId", - "cpConfigId", - "cpProtocolInfo" - ], - "oneOf": [ - { - "required": [ - "associatedVnfcCpId" - ] + "vnfProvider": { + "description": "Provider of the VNF and the VNFD. The value is copied from the VNFD.\n", + "type": "string" }, - { - "required": [ - "associatedVipCpId" - ] + "vnfProductName": { + "description": "Name to identify the VNF Product. The value is copied from the VNFD.\n", + "type": "string" }, - { - "required": [ - "associatedVnfVirtualLinkId" - ] - } - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" + "vnfSoftwareVersion": { + "description": "A version.\n", + "type": "string" }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" + "vnfdVersion": { + "description": "A version.\n", + "type": "string" }, - "cpConfigId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" + "vnfConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "instantiationState": { + "description": "The instantiation state of the VNF.\n", + "type": "string", + "enum": [ + "NOT_INSTANTIATED", + "INSTANTIATED" + ] }, - "cpProtocolInfo": { - "description": "Network protocol information for this CP.\n", - "type": "array", - "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "instantiatedVnfInfo": { + "description": "Information specific to an instantiated VNF instance. This attribute shall be present if the instantiateState attribute value is INSTANTIATED.\n", "type": "object", "required": [ - "layerProtocol" + "flavourId", + "vnfState", + "extCpInfo" ], "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET", - "IP_FOR_VIRTUAL_CP" - ] - }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", - "type": "object", - "anyOf": [ - { - "required": [ - "macAddress" - ] - }, - { - "required": [ - "ipAddresses" - ] - } - ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "segmentationId": { - "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + "flavourId": { + "description": "An identifier that is unique within a VNF descriptor.\n", "type": "string" - }, - "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", + }, + "vnfState": { + "description": "STARTED: The VNF instance is up and running. STOPPED: The VNF instance has been shut down.\n", + "type": "string", + "enum": [ + "STARTED", + "STOPPED" + ] + }, + "scaleStatus": { + "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect. This attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling.\n", "type": "array", "items": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" - }, - "addressRange": { - "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "description": "This type represents the scale level of a VNF instance related to a scaling aspect.\n", + "type": "object", + "required": [ + "aspectId", + "scaleLevel" + ], + "properties": { + "aspectId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "scaleToLevel": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } - } - }, - "subnetId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" } - } } - } - } - }, - "virtualCpAddress": { - "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "loadBalancerIp": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", - "type": "string" - } - } - } - } - } - }, - "extLinkPortId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "associatedVnfcCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "associatedVipCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "associatedVirtualCpId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "associatedVnfVirtualLinkId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4. It shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - } - } - } - }, - "vipCpInfo": { - "description": "VIP CPs that are part of the VNF instance. Shall be present when that particular VIP CP of the VNFC instance is associated to an external CP of the VNF instance.\nMay be present otherwise.\n", - "type": "array", - "items": { - "description": "This type provides information related to virtual IP CP.\nNOTE 1:\tIt is possible that there is no associated VnfcCp because the virtual IP CP is available but not associated yet. NOTE 2: If only the value or the presence of this attribute is changed in the \"VipCpInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVipCp\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", - "type": "object", - "required": [ - "cpInstanceId", - "cpdId" - ], - "properties": { - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfExtCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpProtocolInfo": { - "description": "Protocol information for this CP. There shall be one cpProtocolInfo for layer 3. There may be one cpProtocolInfo for layer 2.\n", - "type": "array", - "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", - "type": "object", - "required": [ - "layerProtocol" - ], - "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET", - "IP_FOR_VIRTUAL_CP" - ] - }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", - "type": "object", - "anyOf": [ - { - "required": [ - "macAddress" - ] - }, - { - "required": [ - "ipAddresses" - ] - } - ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "segmentationId": { - "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", - "type": "string" - }, - "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", + }, + "maxScaleLevels": { + "description": "Maximum allowed scale levels of the VNF, one entry per aspect. This attribute shall be present if the VNF supports scaling.\n", "type": "array", "items": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" - }, - "addressRange": { - "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "description": "This type represents the scale level of a VNF instance related to a scaling aspect.\n", + "type": "object", + "required": [ + "aspectId", + "scaleLevel" + ], + "properties": { + "aspectId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "vnfdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "scaleToLevel": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } - } - }, - "subnetId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" } - } } - } - } - }, - "virtualCpAddress": { - "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "loadBalancerIp": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", - "type": "string" - } - } - } - } - } - }, - "associatedVnfcCpIds": { - "description": "Identifiers of the VnfcCps that share the virtual IP addresse allocated to the virtual IP CP instance. See note.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - }, - "vnfLinkPortId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "virtualCpInfo": { - "description": "Virtual CPs that are part of the VNF instance. Shall be present when a particular virtual CP is associated to an external CP of the VNF instance. May be present otherwise.\n", - "type": "array", - "items": { - "description": "This type provides information related to a virtual CP instance of a VNF.\nNOTE: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\n", - "type": "object", - "required": [ - "cpInstanceId", - "cpdId", - "resourceHandle", - "vduIds" - ], - "properties": { - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "vnfExtCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpProtocolInfo": { - "description": "Protocol information for this CP. There shall be one cpProtocolInfo for each layer protocol supported.\n", - "type": "array", - "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", - "type": "object", - "required": [ - "layerProtocol" - ], - "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET", - "IP_FOR_VIRTUAL_CP" - ] - }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", - "type": "object", - "anyOf": [ - { - "required": [ - "macAddress" - ] - }, - { - "required": [ - "ipAddresses" - ] - } - ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "segmentationId": { - "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", - "type": "string" - }, - "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", + "extCpInfo": { + "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", "type": "array", + "minItems": 1, "items": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" - }, - "addressRange": { - "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n ΓÇ£extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "type": "object", + "required": [ + "id", + "cpdId", + "cpConfigId", + "cpProtocolInfo" + ], + "oneOf": [ + { + "required": [ + "associatedVnfcCpId" + ] }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + { + "required": [ + "associatedVipCpId" + ] + }, + { + "required": [ + "associatedVnfVirtualLinkId" + ] + } + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + }, + "virtualCpAddress": { + "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "type": "string" + } + } + } + } + } + }, + "extLinkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "associatedVnfcCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "associatedVipCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "associatedVirtualCpId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "associatedVnfVirtualLinkId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "netAttDefResourceId": { + "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4. It shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } } - } - }, - "subnetId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" } - } } - } - } - }, - "virtualCpAddress": { - "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "loadBalancerIp": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", - "type": "string" - } - } - } - } - } - }, - "vduIds": { - "description": "Reference to the VDU(s) which implement the service accessible via the virtual CP instance. See note.\n", - "type": "array", - "minItems": 1, - "items": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - } - }, - "additionalServiceInfo": { - "description": "Additional service identification information of the virtual CP instance.\n", - "type": "array", - "items": { - "description": "This type provides additional service information of the virtual CP instance used to expose properties of the virtual CP to NFV-MANO.\nNOTE: This attribute shall only be present if additional information is needed to identify the service \n termination within the VNF, such as for example a URL path information in an HTTP request required \n to allow a single virtual CP IP address to be used for several HTTP based services that use the \n same port number.\n", - "type": "object", - "required": [ - "portInfo" - ], - "properties": { - "portInfo": { - "description": "Service port numbers exposed by the virtual CP instance.\n", - "minItems": 1, - "type": "array", - "items": { - "description": "This type describes the service identifying port properties exposed by the virtual CP instance.\n", - "type": "object", - "required": [ - "name", - "port", - "portConfigurable" - ], - "properties": { - "name": { - "description": "The name of the port exposed by the virtual CP instance.\n", - "type": "string" - }, - "protocol": { - "description": "The L4 protocol for this port exposed by the virtual CP instance.\nPermitted values: - TCP - UDP - SCTP\n", - "type": "string", - "enum": [ - "TCP", - "UDP", - "SCTP" - ] - }, - "port": { - "description": "The L4 port number exposed by the virtual CP instance.\n", - "type": "integer" - }, - "portConfigurable": { - "description": "The Boolean is a data type having two values (true and false).\n", - "type": "boolean" + }, + "vipCpInfo": { + "description": "VIP CPs that are part of the VNF instance. Shall be present when that particular VIP CP of the VNFC instance is associated to an external CP of the VNF instance.\nMay be present otherwise.\n", + "type": "array", + "items": { + "description": "This type provides information related to virtual IP CP.\nNOTE 1:\tIt is possible that there is no associated VnfcCp because the virtual IP CP is available but not associated yet. NOTE 2: If only the value or the presence of this attribute is changed in the \"VipCpInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVipCp\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "type": "object", + "required": [ + "cpInstanceId", + "cpdId" + ], + "properties": { + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfExtCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Protocol information for this CP. There shall be one cpProtocolInfo for layer 3. There may be one cpProtocolInfo for layer 2.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + }, + "virtualCpAddress": { + "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "type": "string" + } + } + } + } + } + }, + "associatedVnfcCpIds": { + "description": "Identifiers of the VnfcCps that share the virtual IP addresse allocated to the virtual IP CP instance. See note.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "vnfLinkPortId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } } - } - } - }, - "serviceInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "extVirtualLinkInfo": { - "description": "Information about the external VLs the VNF instance is connected to.\n", - "type": "array", - "items": { - "description": "This type represents information about an external VL.\nNOTE:\tThis attribute reflects the current configuration information that has resulted from merging into this attribute \n the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the \n most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" \n or \"ChangeCurrentVnfPkgRequest\", or in the Grant response. If applying such change results in an empty list of \n \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its \n parent data structure.\n", - "type": "object", - "required": [ - "id", - "resourceHandle", - "currentVnfExtCpData" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" + "virtualCpInfo": { + "description": "Virtual CPs that are part of the VNF instance. Shall be present when a particular virtual CP is associated to an external CP of the VNF instance. May be present otherwise.\n", + "type": "array", + "items": { + "description": "This type provides information related to a virtual CP instance of a VNF.\nNOTE: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\n", + "type": "object", + "required": [ + "cpInstanceId", + "cpdId", + "resourceHandle", + "vduIds" + ], + "properties": { + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "vnfExtCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Protocol information for this CP. There shall be one cpProtocolInfo for each layer protocol supported.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + }, + "virtualCpAddress": { + "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "type": "string" + } + } + } + } + } + }, + "vduIds": { + "description": "Reference to the VDU(s) which implement the service accessible via the virtual CP instance. See note.\n", + "type": "array", + "minItems": 1, + "items": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + } + }, + "additionalServiceInfo": { + "description": "Additional service identification information of the virtual CP instance.\n", + "type": "array", + "items": { + "description": "This type provides additional service information of the virtual CP instance used to expose properties of the virtual CP to NFV-MANO.\nNOTE: This attribute shall only be present if additional information is needed to identify the service \n termination within the VNF, such as for example a URL path information in an HTTP request required \n to allow a single virtual CP IP address to be used for several HTTP based services that use the \n same port number.\n", + "type": "object", + "required": [ + "portInfo" + ], + "properties": { + "portInfo": { + "description": "Service port numbers exposed by the virtual CP instance.\n", + "minItems": 1, + "type": "array", + "items": { + "description": "This type describes the service identifying port properties exposed by the virtual CP instance.\n", + "type": "object", + "required": [ + "name", + "port", + "portConfigurable" + ], + "properties": { + "name": { + "description": "The name of the port exposed by the virtual CP instance.\n", + "type": "string" + }, + "protocol": { + "description": "The L4 protocol for this port exposed by the virtual CP instance.\nPermitted values: - TCP - UDP - SCTP\n", + "type": "string", + "enum": [ + "TCP", + "UDP", + "SCTP" + ] + }, + "port": { + "description": "The L4 port number exposed by the virtual CP instance.\n", + "type": "integer" + }, + "portConfigurable": { + "description": "The Boolean is a data type having two values (true and false).\n", + "type": "boolean" + } + } + } + }, + "serviceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "extLinkPorts": { - "description": "Link ports of this VL.\n", - "type": "array", - "items": { - "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\nNOTE 1:\tThe use cases UC#4 and UC#5 in clause A.4 of ETSI GS NFV-IFA 007 provide examples for such a configuration. NOTE 2:\tThe value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\" attribute.\n", - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" - } + "extVirtualLinkInfo": { + "description": "Information about the external VLs the VNF instance is connected to.\n", + "type": "array", + "items": { + "description": "This type represents information about an external VL.\nNOTE:\tThis attribute reflects the current configuration information that has resulted from merging into this attribute \n the \"VnfExtCpData\" information which was passed as part of the \"ExtVirtualLinkData\" structure in the input of the \n most recent VNF LCM operation such as \"InstantiateVnfRequest\", \"ChangeExtVnfConnectivityRequest\", \"ChangeVnfFlavourRequest\" \n or \"ChangeCurrentVnfPkgRequest\", or in the Grant response. If applying such change results in an empty list of \n \"currentVnfExtCpData\" structure instances, the affected instance of \"ExtVirtualLinkInfo\" shall be removed from its \n parent data structure.\n", + "type": "object", + "required": [ + "id", + "resourceHandle", + "currentVnfExtCpData" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "extLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "description": "This type represents information about a link port of an external VL, i.e. a port providing connectivity for the VNF to an NS VL.\nNOTE 1:\tThe use cases UC#4 and UC#5 in clause A.4 of ETSI GS NFV-IFA 007 provide examples for such a configuration. NOTE 2:\tThe value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\" attribute.\n", + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "secondaryCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "trunkResourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + }, + "currentVnfExtCpData": { + "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", + "type": "array", + "items": { + "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n", + "type": "object", + "required": [ + "cpdId" + ], + "properties": { + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfig": { + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3 and 4.\n", + "type": "object", + "additionalProperties": { + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the\n \"resourceHandle\" attribute in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "anyOf": [ + { + "required": [ + "linkPortId" + ] + }, + { + "required": [ + "cpProtocolData" + ] + }, + { + "required": [ + "netAttDefResourceId" + ] + } + ], + "type": "object", + "properties": { + "parentCpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "linkPortId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "createExtLinkPort": { + "description": "Indicates to the VNFM the need to create a dedicated link port for the external CP. If set to True, the VNFM shall create a link port. If set to False, the VNFM shall not create a link port. This attribute is only applicable for external CP instances without a floating IP address that expose a virtual IP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", + "type": "boolean" + }, + "cpProtocolData": { + "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. See notes 1 and 2.\n", + "type": "array", + "items": { + "description": "This type represents network protocol data. * NOTE:\tThis attribute allows to signal the addition of further types of layer and protocol\n in future versions of the present document in a backwards-compatible way. In the current\n version of the present document, only IP over Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "Identifier of layer(s) and protocol(s). Permitted values:\n - IP_OVER_ETHERNET.\n - IP_FOR_VIRTUAL_CP\nSee note\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents network address data for IP over Ethernet to assign to the external CP. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI's transport technology.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "ipAddressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationType": { + "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values: -\tVLAN: the subport uses VLAN as encapsulation type. -\tINHERIT: the subport gets its segmentation type from the network itΓÇÖs connected to. This attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", + "type": "string", + "enum": [ + "VLAN", + "INHERIT" + ] + }, + "segmentationId": { + "description": "Identification of the network segment to which the CP instance connects to. See note 3 and note 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "fixedAddresses": { + "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "numDynamicAddresses": { + "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "integer" + }, + "addressRange": { + "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used. See note 2.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + }, + "virtualCpAddress": { + "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for Kubernetes® that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp and the addressPoolName attributes shall not be present at the same time.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "type": "string" + } + } + } + } + } + }, + "netAttDefResourceId": { + "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + } + } + } + } + }, + "extNetAttDefResource": { + "description": "Network attachment definition resources that provide the specification of the interface to attach connection points to this VL.\n", + "type": "array", + "items": { + "description": "This type contains information related to a network attachment definition resource that provides the specification of the interface used to connect one or multiple connection points to a secondary container cluster network.\n", + "type": "object", + "required": [ + "netAttDefResourceInfoId", + "netAttDefResource" + ], + "properties": { + "netAttDefResourceInfoId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "netAttDefResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "associatedExtCpId": { + "description": "Identifier of the external CP associated to this network attachment definition resource. Shall be present when the network attachment definition resource is used for external connectivity by the VNF.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "associatedVnfcCpId": { + "description": "Identifier of the VNFC CP associated to this network attachment definition resource. May be present when the network attachment definition resource is used for internal connectivity by the VNF.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + } + } + } + } + } } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "secondaryCpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "trunkResourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - } - } - } - }, - "currentVnfExtCpData": { - "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", - "type": "array", - "items": { - "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n", - "type": "object", - "required": [ - "cpdId" - ], - "properties": { - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "cpConfig": { - "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3 and 4.\n", - "type": "object", - "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the\n \"resourceHandle\" attribute in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", - "anyOf": [ - { - "required": [ - "linkPortId" - ] - }, - { - "required": [ - "cpProtocolData" - ] - }, - { - "required": [ - "netAttDefResourceId" - ] + }, + "extManagedVirtualLinkInfo": { + "description": "Information about the externally managed internal VLs of the VNF instance. See note 5 and note 6. It is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed multi-site VL instance (refer to clause 5.5.3.5). Even though externally-managed internal VLs are also used for VNF-internal connectivity, they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n", + "type": "array", + "items": { + "description": "This type provides information about an externally-managed virtual link.\n", + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "vnfLinkPorts": { + "description": "Link ports of this VL.\n", + "type": "array", + "items": { + "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + }, + "vipCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "trunkResourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + }, + "vnfNetAttDefResource": { + "description": "Network attachment definition resources that provide the specification of the interface to attach connection points to this VL.\n", + "type": "array", + "items": { + "description": "This type contains information related to a network attachment definition resource that provides the specification of the interface used to connect one or multiple connection points to a secondary container cluster network.\n", + "type": "object", + "required": [ + "netAttDefResourceInfoId", + "netAttDefResource" + ], + "properties": { + "netAttDefResourceInfoId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "netAttDefResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "associatedExtCpId": { + "description": "Identifier of the external CP associated to this network attachment definition resource. Shall be present when the network attachment definition resource is used for external connectivity by the VNF.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "associatedVnfcCpId": { + "description": "Identifier of the VNFC CP associated to this network attachment definition resource. May be present when the network attachment definition resource is used for internal connectivity by the VNF.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + } + } + } + } + } } - ], - "type": "object", - "properties": { - "parentCpConfigId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "linkPortId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "createExtLinkPort": { - "description": "Indicates to the VNFM the need to create a dedicated link port for the external CP. If set to True, the VNFM shall create a link port. If set to False, the VNFM shall not create a link port. This attribute is only applicable for external CP instances without a floating IP address that expose a virtual IP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", - "type": "boolean" - }, - "cpProtocolData": { - "description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL. See notes 1 and 2.\n", - "type": "array", - "items": { - "description": "This type represents network protocol data. * NOTE:\tThis attribute allows to signal the addition of further types of layer and protocol\n in future versions of the present document in a backwards-compatible way. In the current\n version of the present document, only IP over Ethernet is supported.\n", + }, + "monitoringParameters": { + "description": "Active monitoring parameters.\n", + "type": "array", + "items": { "type": "object", "required": [ - "layerProtocol" + "id", + "performanceMetric" ], "properties": { - "layerProtocol": { - "description": "Identifier of layer(s) and protocol(s). Permitted values:\n - IP_OVER_ETHERNET.\n - IP_FOR_VIRTUAL_CP\nSee note\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET", - "IP_FOR_VIRTUAL_CP" - ] - }, - "ipOverEthernet": { - "description": "This type represents network address data for IP over Ethernet to assign to the external CP. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI's transport technology.\n", + "id": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "name": { + "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n", + "type": "string" + }, + "performanceMetric": { + "description": "Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n", + "type": "string" + } + } + } + }, + "localizationLanguage": { + "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n", + "type": "string" + }, + "vnfcResourceInfo": { + "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure \n of information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n - For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n - For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\n\n* NOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that\n exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly\n to an external VL.\n* NOTE 3:\tThe information can be omitted because it is already available as part of the external CP information. * NOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\" structure by \n an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVnfc\"\n structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to \n this LCM operation occurrence.\n* NOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment \n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build \n a link redundant mated pair in SR-IOV cases.\n* NOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "type": "object", + "required": [ + "id", + "vduId", + "computeResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "computeResource": { + "required": [ + "resourceId" + ], "type": "object", - "anyOf": [ - { - "required": [ - "macAddress" - ] - }, - { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "storageResourceIds": { + "description": "References to the VirtualStorage resources or references to Storage MCIO(s). The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfcCpInfo": { + "description": "All the CPs of the VNFC instance.\n", + "type": "array", + "items": { + "type": "object", "required": [ - "ipAddresses" - ] - } + "id", + "cpdId" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfExtCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information. See note 3.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "array", + "items": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + } + } + }, + "virtualCpAddress": { + "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "type": "string" + } + } + } + } + } + }, + "vnfLinkPortId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "parentCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "netAttDefResourceId": { + "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "vnfVirtualLinkResourceInfo": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance. NOTE: If only the value or the presence of this attribute is changed in the \"VnfVirtualLinkResourceInfo\" \n structure by an LCM operation occurrence, this does not represent a change that requires including a \n related \"AffectedVirtualLink\" structure in the VNF LCM operation occurrence notifications or the \n \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource", + "vnfLinkPorts" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "networkResource": { + "required": [ + "resourceId" ], - "oneOf": [ - { - "required": [ - "fixedAddresses" - ] - }, - { - "required": [ - "numDynamicAddresses" - ] - }, - { + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfLinkPorts": { + "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", + "type": "array", + "items": { + "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", + "type": "object", "required": [ - "ipAddressRange" - ] - } + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + }, + "vipCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "trunkResourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "virtualStorageResourceInfo": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\nNOTE: If only the value or the presence of this attribute is changed in the \"VirtualStorageResourceInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVirtualStorage\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "type": "object", + "required": [ + "id", + "virtualStorageDescId", + "storageResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "virtualStorageDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "storageResource": { + "required": [ + "resourceId" ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "segmentationType": { - "description": "Specifies the encapsulation type for the traffics coming in and out of the trunk subport. Permitted values: -\tVLAN: the subport uses VLAN as encapsulation type. -\tINHERIT: the subport gets its segmentation type from the network itΓÇÖs connected to. This attribute may be present for CP instances that represent subports in a trunk and shall be absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used.\n", - "type": "string", - "enum": [ - "VLAN", - "INHERIT" - ] - }, - "segmentationId": { - "description": "Identification of the network segment to which the CP instance connects to. See note 3 and note 4.\n", + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, + "vnfcInfo": { + "description": "Information about the VNFC instances.\n", + "type": "array", + "items": { + "description": "This type represents the information about a VNFC instance that is part of a VNF instance. * NOTE:\tThis allows to represent the error condition that a VNFC instance has lost its resources.\n", + "type": "object", + "required": [ + "id", + "vduId", + "vnfcState" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vduId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfcResourceInfoId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfcState": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfcConfigurableProperties": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "mcioInfo": { + "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", + "type": "array", + "items": { + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", + "type": "object", + "required": [ + "mcioId", + "mcioName", + "mcioNamespace", + "vduId", + "cismId", + "mcioType", + "desiredInstances", + "availableInstances" + ], + "properties": { + "mcioId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "mcioName": { + "description": "Human readable name of this MCIO. See note 4.\n", + "type": "string" + }, + "mcioNamespace": { + "description": "Namespace of this MCIO.\n", + "type": "string" + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cismId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "ipAddresses": { - "description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned. See note 1.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "fixedAddresses": { - "description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - }, - "numDynamicAddresses": { - "description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). See note 2.\n", - "type": "integer" - }, - "addressRange": { - "description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used. See note 2.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } - } - }, - "subnetId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - } - } - } - } - } - }, - "virtualCpAddress": { - "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for Kubernetes® that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp and the addressPoolName attributes shall not be present at the same time.\n", - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + }, + "mcioType": { + "description": "The type of MCIO. Specific values, their semantics and associated MCIO types are defined in clause 5.5.4.9. Additional values are also permitted. See note 1.\n", "type": "string", "enum": [ - "IPV4", - "IPV6" + "Deployment", + "StatefulSet" ] - }, - "loadBalancerIp": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", - "type": "string" - } + }, + "desiredInstances": { + "description": "Number of desired MCIO instances.\n", + "type": "integer" + }, + "availableInstances": { + "description": "Number of available MCIO instances.\n", + "type": "integer" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" } - } } - } - }, - "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } } - } } - } } - } }, - "extNetAttDefResource": { - "description": "Network attachment definition resources that provide the specification of the interface to attach connection points to this VL.\n", - "type": "array", - "items": { - "description": "This type contains information related to a network attachment definition resource that provides the specification of the interface used to connect one or multiple connection points to a secondary container cluster network.\n", + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "_links": { + "description": "Links to resources related to this resource.\n", "type": "object", "required": [ - "netAttDefResourceInfoId", - "netAttDefResource" + "self" ], "properties": { - "netAttDefResourceInfoId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "netAttDefResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "self": { + "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", + "required": [ + "href" + ], "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" - } + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "indicators": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "instantiate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "terminate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "scale": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "scaleToLevel": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "changeFlavour": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "heal": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "operate": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "changeExtConn": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "createSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "revertToSnapshot": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + }, + "changeCurrentVnfPkg": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "associatedExtCpId": { - "description": "Identifier of the external CP associated to this network attachment definition resource. Shall be present when the network attachment definition resource is used for external connectivity by the VNF.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - }, - "associatedVnfcCpId": { - "description": "Identifier of the VNFC CP associated to this network attachment definition resource. May be present when the network attachment definition resource is used for internal connectivity by the VNF.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" } - } } - } } - } } - }, - "extManagedVirtualLinkInfo": { - "description": "Information about the externally managed internal VLs of the VNF instance. See note 5 and note 6. It is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed multi-site VL instance (refer to clause 5.5.3.5). Even though externally-managed internal VLs are also used for VNF-internal connectivity, they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n", + }, + "vnfcSnapshots": { + "description": "Information about VNFC snapshots constituting this VNF snapshot.\n", "type": "array", "items": { - "description": "This type provides information about an externally-managed virtual link.\n", - "type": "object", - "required": [ - "id", - "vnfVirtualLinkDescId", - "networkResource" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfVirtualLinkDescId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "networkResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" + "description": "This type represents a VNFC snapshot. * NOTE 1:\tThe identifier of the compute snapshot resource is assigned during creation of a VNFC\n snapshot being returned from the VIM as output data in the response message of the individual\n resource operations. This attribute shall only be present for a VNFC snapshot that has been\n newly created by the VNFM as a result of the \"Create VNF snapshot task\".\n NOTE 2:\tThe identifier of the storage snapshot resource is assigned during creation of a VNFC snapshot\n being returned from the VIM as output data in the response message of the individual resource\n operations. This attribute shall only be present for a VNFC snapshot with an associated storage\n resource and that has been newly created by the VNFM as a result of the \"Create VNF snapshot task\".\n", + "type": "object", + "required": [ + "id", + "vnfcInstanceId", + "creationStartedAt", + "vnfcResourceInfoId" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" + "vnfcInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" + "creationStartedAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" - } - } + "creationFinishedAt": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "vnfLinkPorts": { - "description": "Link ports of this VL.\n", - "type": "array", - "items": { - "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "resourceHandle": { + "vnfcResourceInfoId": { + "description": "This type represents the information about a VNFC instance that is part of a VNF instance. * NOTE:\tThis allows to represent the error condition that a VNFC instance has lost its resources.\n", + "type": "object", "required": [ - "resourceId" + "id", + "vduId", + "vnfcState" ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vduId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + }, + "vnfcResourceInfoId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfcState": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" - }, - "additionalInfo": { + }, + "vnfcConfigurableProperties": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", "type": "object" - } } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } } - }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpInstanceType": { - "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", - "type": "string", - "enum": [ - "VNFC_CP", - "EXT_CP" - ] - }, - "vipCpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "trunkResourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - } - } - } - }, - "vnfNetAttDefResource": { - "description": "Network attachment definition resources that provide the specification of the interface to attach connection points to this VL.\n", - "type": "array", - "items": { - "description": "This type contains information related to a network attachment definition resource that provides the specification of the interface used to connect one or multiple connection points to a secondary container cluster network.\n", - "type": "object", - "required": [ - "netAttDefResourceInfoId", - "netAttDefResource" - ], - "properties": { - "netAttDefResourceInfoId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "netAttDefResource": { + }, + "computeSnapshotResource": { "required": [ - "resourceId" + "resourceId" ], "type": "object", "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "associatedExtCpId": { - "description": "Identifier of the external CP associated to this network attachment definition resource. Shall be present when the network attachment definition resource is used for external connectivity by the VNF.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - }, - "associatedVnfcCpId": { - "description": "Identifier of the VNFC CP associated to this network attachment definition resource. May be present when the network attachment definition resource is used for internal connectivity by the VNF.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - } - } - } - } - } - } - }, - "monitoringParameters": { - "description": "Active monitoring parameters.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "performanceMetric" - ], - "properties": { - "id": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "name": { - "description": "Human readable name of the monitoring parameter, as defined in the VNFD.\n", - "type": "string" - }, - "performanceMetric": { - "description": "Performance metric that is monitored. This attribute shall contain the related \"Measurement Name\" value as defined in clause 7.2 of ETSI GS NFV-IFA 027.\n", - "type": "string" - } - } - } - }, - "localizationLanguage": { - "description": "Information about localization language of the VNF (includes e.g. strings in the VNFD). The localization languages supported by a VNF can be declared in the VNFD, and localization language selection can take place at instantiation time. The value shall comply with the format defined in IETF RFC 5646.\n", - "type": "string" - }, - "vnfcResourceInfo": { - "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure \n of information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n - For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n - For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\n\n* NOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that\n exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly\n to an external VL.\n* NOTE 3:\tThe information can be omitted because it is already available as part of the external CP information. * NOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\" structure by \n an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVnfc\"\n structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to \n this LCM operation occurrence.\n* NOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment \n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build \n a link redundant mated pair in SR-IOV cases.\n* NOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", - "type": "object", - "required": [ - "id", - "vduId", - "computeResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vduId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "computeResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "storageResourceIds": { - "description": "References to the VirtualStorage resources or references to Storage MCIO(s). The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfcCpInfo": { - "description": "All the CPs of the VNFC instance.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "cpdId" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfExtCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } }, - "cpProtocolInfo": { - "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information. See note 3.\n", - "type": "array", - "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "storageSnapshotResources": { + "description": "Mapping of the storage resources associated to the VNFC with the storage snapshot resources.\n", "type": "object", "required": [ - "layerProtocol" + "storageResourceId" ], "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET", - "IP_FOR_VIRTUAL_CP" - ] - }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", - "type": "object", - "anyOf": [ - { - "required": [ - "macAddress" - ] - }, - { - "required": [ - "ipAddresses" - ] - } - ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "segmentationId": { - "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + "storageResourceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" - }, - "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] + }, + "storageSnapshotResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" }, - "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - } + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" }, - "addressRange": { - "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + } } - } }, - "subnetId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" } - } } - } - } - }, - "virtualCpAddress": { - "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "loadBalancerIp": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", - "type": "string" - } - } - } - } - } - }, - "vnfLinkPortId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "parentCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "vnfVirtualLinkResourceInfo": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance. NOTE: If only the value or the presence of this attribute is changed in the \"VnfVirtualLinkResourceInfo\" \n structure by an LCM operation occurrence, this does not represent a change that requires including a \n related \"AffectedVirtualLink\" structure in the VNF LCM operation occurrence notifications or the \n \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", - "type": "object", - "required": [ - "id", - "vnfVirtualLinkDescId", - "networkResource", - "vnfLinkPorts" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfVirtualLinkDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "networkResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfLinkPorts": { - "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", - "type": "array", - "items": { - "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", - "type": "object", - "required": [ - "id", - "resourceHandle" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "resourceHandle": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" } - } }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpInstanceType": { - "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", - "type": "string", - "enum": [ - "VNFC_CP", - "EXT_CP" - ] - }, - "vipCpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "trunkResourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - } - } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "virtualStorageResourceInfo":{ - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\nNOTE: If only the value or the presence of this attribute is changed in the \"VirtualStorageResourceInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVirtualStorage\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", - "type": "object", - "required": [ - "id", - "virtualStorageDescId", - "storageResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "virtualStorageDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "storageResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { + "userDefinedData": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", "type": "object" - } } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "vnfcInfo": { - "description": "Information about the VNFC instances.\n", - "type": "array", - "items": { - "description": "This type represents the information about a VNFC instance that is part of a VNF instance. * NOTE:\tThis allows to represent the error condition that a VNFC instance has lost its resources.\n", - "type": "object", - "required": [ - "id", - "vduId", - "vnfcState" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vduId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfcResourceInfoId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfcState": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfcConfigurableProperties": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } - }, - "mcioInfo": { - "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", - "type": "array", - "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", - "type": "object", - "required": [ - "mcioId", - "mcioName", - "mcioNamespace", - "vduId", - "cismId", - "mcioType", - "desiredInstances", - "availableInstances" - ], - "properties": { - "mcioId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "mcioName": { - "description": "Human readable name of this MCIO. See note 4.\n", - "type": "string" - }, - "mcioNamespace": { - "description": "Namespace of this MCIO.\n", - "type": "string" - }, - "vduId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "cismId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "mcioType": { - "description": "The type of MCIO. Specific values, their semantics and associated MCIO types are defined in clause 5.5.4.9. Additional values are also permitted. See note 1.\n", - "type": "string", - "enum": [ - "Deployment", - "StatefulSet" - ] - }, - "desiredInstances": { - "description": "Number of desired MCIO instances.\n", - "type": "integer" - }, - "availableInstances": { - "description": "Number of available MCIO instances.\n", - "type": "integer" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" } - } } - } + }, + "userDefinedData": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "extensions": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "_links": { - "description": "Links to resources related to this resource.\n", - "type": "object", - "required": [ - "self" - ], - "properties": { - "self": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "indicators": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "instantiate": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "terminate": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "scale": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "scaleToLevel": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "changeFlavour": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "heal": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "operate": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "changeExtConn": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "createSnapshot": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "revertToSnapshot": { + } + }, + "_links": { + "description": "Links to resources related to this resource.\n", + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", "required": [ - "href" + "href" ], "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } } - }, - "changeCurrentVnfPkg": { + }, + "takenFrom": { "description": "This type represents a link to a resource using an absolute URI.\n", "type": "object", "required": [ - "href" + "href" ], "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - } - } - } - } - }, - "vnfcSnapshots": { - "description": "Information about VNFC snapshots constituting this VNF snapshot.\n", - "type": "array", - "items": { - "description": "This type represents a VNFC snapshot. * NOTE 1:\tThe identifier of the compute snapshot resource is assigned during creation of a VNFC\n snapshot being returned from the VIM as output data in the response message of the individual\n resource operations. This attribute shall only be present for a VNFC snapshot that has been\n newly created by the VNFM as a result of the \"Create VNF snapshot task\".\n NOTE 2:\tThe identifier of the storage snapshot resource is assigned during creation of a VNFC snapshot\n being returned from the VIM as output data in the response message of the individual resource\n operations. This attribute shall only be present for a VNFC snapshot with an associated storage\n resource and that has been newly created by the VNFM as a result of the \"Create VNF snapshot task\".\n", - "type": "object", - "required": [ - "id", - "vnfcInstanceId", - "creationStartedAt", - "vnfcResourceInfoId" - ], - "properties": { - "id": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfcInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "creationStartedAt": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "creationFinishedAt": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" - }, - "vnfcResourceInfoId": { - "description": "This type represents the information about a VNFC instance that is part of a VNF instance. * NOTE:\tThis allows to represent the error condition that a VNFC instance has lost its resources.\n", - "type": "object", - "required": [ - "id", - "vduId", - "vnfcState" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vduId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfcResourceInfoId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfcState": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfcConfigurableProperties": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "computeSnapshotResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "storageSnapshotResources": { - "description": "Mapping of the storage resources associated to the VNFC with the storage snapshot resources.\n", - "type": "object", - "required": [ - "storageResourceId" - ], - "properties": { - "storageResourceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "storageSnapshotResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" } - } } - } - }, - "userDefinedData": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" } - } - } - }, - "userDefinedData": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "_links": { - "description": "Links to resources related to this resource.\n", - "type": "object", - "required": [ - "self" - ], - "properties": { - "self": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } - } - }, - "takenFrom": { - "description": "This type represents a link to a resource using an absolute URI.\n", - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "String formatted according to IETF RFC 3986.\n", - "type": "string" - } } - } } - } } - } \ No newline at end of file +} \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json index 3a760326..4d240264 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json @@ -1255,7 +1255,7 @@ } } }, - "currentVnfExtCpData": { + "currentVnfExtCpData": { "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", "type": "array", "items": { @@ -2278,7 +2278,7 @@ } } }, - "virtualStorageResourceInfo":{ + "virtualStorageResourceInfo": { "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\nNOTE: If only the value or the presence of this attribute is changed in the \"VirtualStorageResourceInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVirtualStorage\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", "type": "object", "required": [ diff --git a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json index eb98e0ce..ad0c5a88 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json @@ -1257,7 +1257,7 @@ } } }, - "currentVnfExtCpData": { + "currentVnfExtCpData": { "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", "type": "array", "items": { @@ -2280,7 +2280,7 @@ } } }, - "virtualStorageResourceInfo":{ + "virtualStorageResourceInfo": { "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\nNOTE: If only the value or the presence of this attribute is changed in the \"VirtualStorageResourceInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVirtualStorage\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", "type": "object", "required": [ -- GitLab From d0f3665895fd7ecb9ca20cd36f0670dbe3ca53de Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 5 Dec 2024 17:32:07 +0500 Subject: [PATCH 09/37] update test cases of VNFLCM-API is per SOL 002 version 5.1.1 --- ...perationOccurrenceNotification.schema.json | 121 +- .../schemas/VnfSnapshotInfo.schema.json | 1832 +++++++++++------ .../schemas/VnfSnapshotsInfo.schema.json | 1832 +++++++++++------ .../schemas/subscription.schema.json | 7 +- .../schemas/subscriptions.schema.json | 7 +- .../schemas/vnfInstance.schema.json | 1344 +++++++----- .../schemas/vnfInstances.schema.json | 1344 +++++++----- .../schemas/vnfLcmOpOcc.schema.json | 115 +- .../schemas/vnfLcmOpOccs.schema.json | 115 +- 9 files changed, 4235 insertions(+), 2482 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json index f65e7b43..ba97aba3 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json @@ -1,5 +1,5 @@ { - "description": "This type represents a VNF lifecycle management operation occurrence notification, which informs the receiver of changes in the VNF lifecycle caused by a VNF LCM operation occurrence. The support of the notification is mandatory. This notification shall be triggered by the VNFM when there is a change in the VNF lifecycle caused by a VNF LCM operation occurrence, including: * Instantiation of the VNF * Scaling of the VNF instance (including auto-scaling) * Healing of the VNF instance (including auto-healing) * Change of the state of the VNF instance (i.e. Operate VNF) * Change of the deployment flavour of the VNF instance * Change of the external connectivity of the VNF instance * Termination of the VNF instance * Modification of VNF instance information and/or VNF configurable\n properties through the \"PATCH\" method on the \"Individual VNF instance\"\n resource.\nIf this is the initial notification about the start of a VNF LCM operation occurrence, it is assumed that the notification is sent by the VNFM before any action (including sending the grant request) is taken as part of the LCM operation. Due to possible race conditions, the \"start\" notification, the grant request and the LCM operation acknowledgment can arrive in any order at the NFVO, and the NFVO shall be able to handle such a situation. If this is a notification about a final or intermediate result state of a VNF LCM operation occurrence, the notification shall be sent after all related actions of the LCM operation that led to this state have been executed. The new state shall be set in the \"Individual VNF LCM operation occurrence\" resource before the notification about the state change is sent. * NOTE 1:\tShall be present if the \"notificationStatus\" is set to \"RESULT\", the \"verbosity\" attribute is set\n to \"FULL\" and the operation has performed any resource modification. Shall be absent otherwise.\n This attribute contains information about the cumulative changes to virtualised resources that\n were performed so far by the VNF LCM operation occurrence and by any of the error handling\n procedures for that operation occurrence.\n NOTE 2:\tFor a particular affected VL, there shall be as many \"AffectedVirtualLink\" entries as needed\n for signalling the different types of changes, i.e. one per virtual link and change type.\n For instance, in the case of signalling affected VL instances involving the addition of a particular\n VL instance with links ports, one \"AffectedVirtualLink\" entry signals the addition of the VL by using\n the \"changeType\" attribute of \"AffectedVirtualLink\" structure equal to \"ADDED\", and another\n \"AffectedVirtualLink\" entry signals the addition of VNF link ports of the VL by using the\n \"changeType\" equal to \"LINK_PORT_ADDED\".\n NOTE 3: Not more than one of changedInfo and modificationsTriggeredByVnfPkgChange shall be present.\n", + "description": "This type represents a VNF lifecycle management operation occurrence notification, which informs the receiver of changes in the VNF lifecycle caused by a VNF LCM operation occurrence. The support of the notification is mandatory. This notification shall be triggered by the VNFM when there is a change in the VNF lifecycle caused by a VNF LCM operation occurrence, including: * Instantiation of the VNF * Scaling of the VNF instance (including auto-scaling) * Healing of the VNF instance (including auto-healing) * Change of the state of the VNF instance (i.e. Operate VNF) * Change of the deployment flavour of the VNF instance * Change of the external connectivity of the VNF instance * Selection of deployable modules of the VNF instance * Termination of the VNF instance * Modification of VNF instance information and/or VNF configurable\n properties through the \"PATCH\" method on the \"Individual VNF instance\"\n resource.\nIf this is the initial notification about the start of a VNF LCM operation occurrence, it is assumed that the notification is sent by the VNFM before any action (including sending the grant request) is taken as part of the LCM operation. Due to possible race conditions, the \"start\" notification, the grant request and the LCM operation acknowledgment can arrive in any order at the NFVO, and the NFVO shall be able to handle such a situation. If this is a notification about a final or intermediate result state of a VNF LCM operation occurrence, the notification shall be sent after all related actions of the LCM operation that led to this state have been executed. The new state shall be set in the \"Individual VNF LCM operation occurrence\" resource before the notification about the state change is sent. * NOTE 1:\tShall be present if the \"notificationStatus\" is set to \"RESULT\", the \"verbosity\" attribute is set\n to \"FULL\" and the operation has performed any resource modification. Shall be absent otherwise.\n This attribute contains information about the cumulative changes to virtualised resources that\n were performed so far by the VNF LCM operation occurrence and by any of the error handling\n procedures for that operation occurrence.\n NOTE 2:\tFor a particular affected VL, there shall be as many \"AffectedVirtualLink\" entries as needed\n for signalling the different types of changes, i.e. one per virtual link and change type.\n For instance, in the case of signaling affected VL instances involving the addition of a particular\n VL instance with links ports, one \"AffectedVirtualLink\" entry signals the addition of the VL by using\n the \"changeType\" attribute of \"AffectedVirtualLink\" structure equal to \"ADDED\", and another\n \"AffectedVirtualLink\" entry signals the addition of VNF link ports of the VL by using the\n \"changeType\" equal to \"LINK_PORT_ADDED\".\n NOTE 3: Not more than one of changedInfo and modificationsTriggeredByVnfPkgChange shall be present.\n", "type": "object", "required": [ "id", @@ -61,7 +61,7 @@ "type": "string" }, "operation": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation \n", "type": "string", "enum": [ "INSTANTIATE", @@ -75,7 +75,8 @@ "MODIFY_INFO", "CREATE_SNAPSHOT", "REVERT_TO_SNAPSHOT", - "CHANGE_VNFPKG" + "CHANGE_VNFPKG", + "SELECT_DEPL_MODS" ] }, "isAutomaticInvocation": { @@ -249,7 +250,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource or Network MCIO that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -426,7 +427,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource or Storage MCIO that is used by a VNF instance. Information about the resource is available from the VIM or the CISM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -544,7 +545,7 @@ } }, "affectedVipCps": { - "description": "Information about virtual IP CP instances that were affected during the execution of the lifecycle management operation, if this notification represents the result of a lifecycle management operation occurrence. Shall be present if the \"notificationStatus\" is set to \"RESULT\", the \"verbosity\" attribute is set to \"FULL\" and the operation has made any changes to the Virtual IP CP instances of the VNF instance. Shall be absent otherwise. Only information about virtual IP CP instances that have been added, deleted or modified shall be provided.\n", + "description": "Information about virtual IP CP instances that were affected during the execution of the lifecycle management operation, if this notification represents the result of a lifecycle management operation occurrence. Shall be present if the \"notificationStatus\" is set to \"RESULT\", the \"verbosity\" attribute is set to \"FULL\" and the operation has made any changes to the VIP CP instances of the VNF instance. Shall be absent otherwise. Only information about VIP CP instances that have been added, deleted or modified shall be provided.\n", "type": "array", "items": { "description": "This type provides information about added, deleted and modified virtual IP CP instances.\n", @@ -616,10 +617,10 @@ } }, "affectedCertificates": { - "description": "Information about certificate content that were affected during the execution of the lifecycle management operation, if this notification represents the result of a lifecycle management operation occurrence. Shall be present when using delegation mode, otherwise shall be absent. This attribute shall be supported when delegation mode in certificate management is applicable\n", + "description": "Information about certificate content that were affected during the execution of the lifecycle management operation, if this notification represents the result of a lifecycle management operation occurrence. Shall be present when using delegation mode, otherwise shall be absent. This attribute shall be supported when delegation mode in certificate management is applicable.\n", "type": "array", "items": { - "description": "This type provides input information about added, deleted, and modified certificate contents.\n", + "description": "This type provides input information about added, deleted and modified certificate contents.\n", "type": "object", "required": [ "certificateInfoId", @@ -647,7 +648,7 @@ "type": "string" }, "changeType": { - "description": "Signals the type of change.", + "description": "Signals the type of change.\n", "type": "string", "enum": [ "ADD", @@ -802,7 +803,7 @@ "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", "type": "array", "items": { - "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n", + "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n* NOTE 5: Subports need not be used for containerized VNFCs. The application container can send and receive IP\n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster\n network has been configured appropriately. Thus, no individual cpConfig, except the one representing the\n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 6: In the case that the cloud native template included in the MCIOP describes the set of VNFC instances, for\n containerized VNFCs individual connection points need not be configured for each VNFC instance. It is only\n required to configure one \"cpConfig\" per \"cpdId\", not per VNFC instance. The case of using, for a scalable\n VDU, a cloud native template in the MCIOP that describes one single VNFC instance is not specified in the\n present document version.\n", "type": "object", "required": [ "cpdId" @@ -813,10 +814,10 @@ "type": "string" }, "cpConfig": { - "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3 and 4.\n", + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5 and 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the\n \"resourceHandle\" attribute in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -881,23 +882,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "fixedAddresses" - ] - }, - { - "required": [ - "numDynamicAddresses" - ] - }, - { - "required": [ - "ipAddressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -924,6 +908,23 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -976,7 +977,7 @@ } }, "virtualCpAddress": { - "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for Kubernetes® that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp and the addressPoolName attributes shall not be present at the same time.\n", + "description": "This type represents network address data for a virtual CP.\n* NOTE 1: The loadBalancerIp and the loadBalancerSourceRanges attributes are only used if the \n CIS cluster is set up to be able to configure an external load balancer. Otherwise, it shall be ignored.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP \n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for \n Kubernetes┬« that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp, addressPoolName and the externalIp attributes shall not be present at the same time.\n", "type": "object", "required": [ "type" @@ -995,9 +996,34 @@ "type": "string", "format": "IP" }, + "externalIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which the CIS cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", "type": "string" + }, + "loadBalancerSourceRanges": { + "description": "List of client IP address ranges allowed to access an external load balancer. See note 1.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } } } } @@ -1137,39 +1163,6 @@ "vnfdVersion": { "description": "A version.\n", "type": "string" - }, - "vimConnectionInfo": { - "description": "If present, this attribute signals the changes to VIM connection info that were passed in the related \"ChangeCurrentVnfPkgRequest\" structure. The provisions for sensitive information defined in clause 4.4.1.6 apply.\n", - "type": "object", - "additionalProperties": { - "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-relate dparameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM., CISM, CIR or MCIOP repository.\n", - "type": "object", - "required": [ - "vimType" - ], - "properties": { - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", - "type": "string" - }, - "interfaceInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "accessInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "extra": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } } } }, diff --git a/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json index 01d7ccd2..069853f9 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json @@ -19,9 +19,9 @@ "required": [ "id", "vnfInstanceId", - "creationStartedAt", + "triggeredAt", "vnfdId", - "vnfInstance", + "vnfInfo", "vnfcSnapshots" ], "properties": { @@ -48,7 +48,7 @@ "type": "string" }, "vnfInstance": { - "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tVNF configurable properties are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n", + "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tThese attributes are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n* NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual extCpInfo, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the ΓÇ£scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the VNF \n LCM operation explicitly indicates the scale level for the aspect.\n", "type": "object", "required": [ "id", @@ -97,6 +97,281 @@ "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" }, + "certificateInfo": { + "description": "This type provides input information related to certificate and certificate management.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "certificateConfigurationInfo": { + "description": "This type provides input information related to certificate management.\n", + "type": "object", + "required": [ + "securityPolicy" + ], + "properties": { + "certificateBaseProfile": { + "description": "This type provides input information to override certificate base profile for certificate management\nNOTE : At least one overriding attributes shall be present, otherwise shall be absent.\n", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "issuer": { + "type": "string", + "description": "Issuer of certificates. See note." + }, + "issuerUniqueIdentifier": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subject": { + "description": "This type provides input information related to subject of certificate.\n* NOTE: At least one overriding attributes shall be present, otherwise shall be absent.\n", + "type": "object", + "properties": { + "commonName": { + "description": "Information of certification target subject FQDN. See note.", + "type": "string" + }, + "organization": { + "description": "Information of certification target subject Organization. See note.", + "type": "string" + }, + "country": { + "description": "Information of certification target subject Country. See note.", + "type": "string" + }, + "state": { + "description": "Information of certification target subject State. See note.", + "type": "string" + }, + "locality": { + "description": "Information of certification target subject Locality. See note.", + "type": "string" + }, + "emailAddress": { + "description": "Information of certification contact email address. See note.", + "type": "string" + } + } + }, + "subjectUniqueIdentifier": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "basicConstraints": { + "type": "string", + "description": "Basic constraints of certificates. See note.\n" + }, + "issuerAltName": { + "description": "Alternative name of issuer of certificates in this NS. See note.", + "type": "array", + "items": { + "type": "string" + } + }, + "subjectAltName": { + "description": "Alternative name of subject of certificates. Shall be present when this certificate is used for encrypted communication using IP address and subjectAltName attribute of CertificateBaseProfile in CertificateDesc of VNFD is empty (see ETSI GS NFV-IFA 011 [7],clause 7.1.19.4). See note", + "type": "array", + "items": { + "type": "string" + } + }, + "nameConstraints": { + "description": "Name constraints of certificates. See note.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "securityPolicy": { + "description": "Information for security policy to be satisfied for certificate.\n", + "type": "array", + "items": { + "description": "This type provides input information related to security policy for certificate management.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "maxValidityPeriod": { + "description": "Allowed max validity period for certificates.", + "type": "integer" + }, + "allowedAlgorithm": { + "description": "Allowed signature algorithm.", + "type": "string" + }, + "minimumKeyLength": { + "description": "Minimum key length for certificates.", + "type": "integer" + } + } + } + }, + "delegationSupportedCertificateManagements": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + }, + "cmfInfo": { + "description": "This type provides input information related to CMF for certificate management.\n", + "type": "object", + "required": [ + "id", + "endPoint", + "supportedProtocol" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "endPoint": { + "description": "End point of CMF instance.", + "type": "object", + "required": [ + "ipAddress", + "link" + ], + "properties": { + "ipAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "link": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + }, + "supportedProtocols": { + "description": "Supported protocol by CMF instance.", + "type": "array", + "items": { + "type": "string", + "enum": [ + "CMP", + "CMPv2", + "EST", + "SCEP" + ] + } + }, + "certificateChain": { + "description": "Certificate chain that this CMF provides.", + "type": "array", + "items": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + } + } + } + } + } + }, + "certificateContents": { + "description": "Information for contents of issued certificates. The information contained in this attribute may be updated over time during the VNF LCM, e.g. certificate(s) renewal.\n", + "type": "array", + "items": { + "description": "This type provides input information related to certificate content.\n", + "type": "object", + "required": [ + "id", + "certificateDescId", + "certificateType" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "certficateDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "certificateType": { + "description": "Type of this certificate.", + "type": "string", + "enum": [ + "VNFCI_CERT", + "VNFOAM_CERT" + ] + }, + "supportedCertificateManagements": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + }, + "version": { + "description": "A version.\n", + "type": "string" + }, + "serialNumber": { + "description": "Serial number of this certificate.", + "type": "integer" + }, + "signatureAlgorithm": { + "description": "Algorithm of this certificate's signature.", + "type": "string" + }, + "issuer": { + "description": "Issuer of this certificate.", + "type": "string" + }, + "notBefore": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "notAfter": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "subject": { + "description": "Subject of this certificate.", + "type": "string" + }, + "publicKeyAlgorithm": { + "description": "Algorithm of this certificate's public key.", + "type": "string" + }, + "publicKey": { + "description": "Public key of this certificate.", + "type": "string" + }, + "certificateExtensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + } + } + }, "instantiationState": { "description": "The instantiation state of the VNF.\n", "type": "string", @@ -127,7 +402,7 @@ ] }, "scaleStatus": { - "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect. This attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling.\n", + "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect. This attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling. For an aspect that has not been deployed because the related deployableModule has not been selected, it indicates the scale level that has been requested in the instantiation or in a scaling operation, or, if none has been requested in any of them, the scale level applicable to the aspect based on the default instantiation level. See note 8.\n", "type": "array", "items": { "description": "This type represents the scale level of a VNF instance related to a scaling aspect.\n", @@ -142,12 +417,12 @@ "type": "string" }, "vnfdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "scaleToLevel": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" } } } @@ -168,116 +443,335 @@ "type": "string" }, "vnfdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "scaleToLevel": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" } } } }, - "extCpInfo": { - "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", + "selectedDeployableModule": { + "description": "References a currently selected deployable module, as defined in the VNFD, that has already completed the instantiation of its VNFCs\n", "type": "array", - "minItems": 1, "items": { - "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n ΓÇ£extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + } + }, + "resourceCapacityDefinition": { + "description": "Shows current values of VDU attributes related to resource capacity, if different to the default values from the VNFD, as indicated in the (one or more) request(s) of all completed VNF LCM operation(s) that contain this attribute. If an attribute value has been modified multiple times, only the last value is shown. The values indicated in this attribute are applicable to all VNFC instances based on the VDU to which the resourceCapacityDefinition is related.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes.\n* NOTE: Resource definitions not related to a VDU are not considered in this version of the present document.\n", "type": "object", "required": [ - "id", - "cpdId", - "cpConfigId", - "cpProtocolInfo" + "type" ], - "oneOf": [ - { - "required": [ - "associatedVnfcCpId" - ] - }, - { - "required": [ - "associatedVipCpId" - ] + "properties": { + "tag": { + "description": "Tag assigned by the issuer of a VNF LCM operation request that contains this data type with values to be applied to a VDU. It is used for tracking purposes. The tag is preserved in the run time record as long as at least one value of the capacity related attributes associated with that tag is still valid, i.e., it has not been modified by a later VNF LCM operation request. At most one tag can be included when the data type is used in a VNF LCM operation request. When the data type is used in the VnfInstance data type it may contain multiple tags, namely those provided in VNF LCM requests, if at least one of the values provided in that request associated to that tag is still applicable in the VNFCs created from this VDU, i.e., it has not been modified by a later request.", + "type": "array", + "items": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + } }, - { - "required": [ - "associatedVnfVirtualLinkId" + "type": { + "description": "Type of the resource definition referenced. VALUES ΓÇó\tCOMPUTE ΓÇó\tSTORAGE ΓÇó\tOSCONTAINER", + "type": "string", + "enum": [ + "COMPUTE", + "STORAGE", + "OSCONTAINER" ] - } - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" }, - "cpdId": { + "vduId": { "description": "An identifier that is unique within a VNF descriptor.\n", "type": "string" }, - "cpConfigId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "cpProtocolInfo": { - "description": "Network protocol information for this CP.\n", + "osContainerDescData": { + "description": "Indicates values for resource capacity related attributes in an OsContainerDesc. It shall be present when the attribute ΓÇÿtypeΓÇÖ indicates OSCONTAINER and absent otherwise.", "type": "array", "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "description": "This type represents selected values for capacity related VDU attributes of an OsContainer resource.\n* NOTE: At least one of the attributes shall be present.\n", "type": "object", "required": [ - "layerProtocol" + "resourceTemplateId" ], - "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET", - "IP_FOR_VIRTUAL_CP" + "oneOf": [ + { + "required": [ + "resourceTemplateId" ] }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", - "type": "object", - "anyOf": [ - { - "required": [ - "macAddress" - ] - }, - { - "required": [ - "ipAddresses" - ] - } - ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "segmentationId": { - "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + { + "required": [ + "requestedCpuResources" + ] + }, + { + "required": [ + "requestedMemoryResources" + ] + }, + { + "required": [ + "requestedEphemeralStorageResources" + ] + }, + { + "required": [ + "extendedResourceRequests" + ] + }, + { + "required": [ + "cpuResourceLimit" + ] + }, + { + "required": [ + "memoryResourceLimit" + ] + }, + { + "required": [ + "ephemeralStorageResourceLimit" + ] + }, + { + "required": [ + "hugePageResources" + ] + } + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "requestedCpuResources": { + "description": "Number of CPU resources requested for the container in milli-CPU. See note.\n", + "type": "integer" + }, + "requestedMemoryResources": { + "description": "Amount of memory resources requested for the container expressed in the same units as specified in the requested_memory_resources_valid_values property in VNFD for this container descriptor. See note.\n", + "type": "array", + "items": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + }, + "requestedEphemeralStorageResources": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "extendedResourceRequests": { + "description": "Map of the amount of extended resources of the type indicated in the key. The key is a string that identifies an extended resource indicated in the extended_resource_requests property in the VNFD for this container descriptor. The value is an integer that indicates the required amount for a particular extended resource.See note.\n", + "type": "object", + "additionalProperties": { + "type": "integer" + } + }, + "cpuResourceLimit": { + "description": "Number of CPU resources the container can maximally use in milli-CPU. See note. \n", + "type": "integer" + }, + "memoryResourceLimit": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "ephemeralStorageResourceLimit": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "hugePageResources": { + "description": "Map of the total size values required for all the hugepages of the size indicated in the key. The key is a string and corresponds to one of the values of the hugepage sizes indicated in the huge_pages_resources property in the VNFD for this container descriptor. The value is a number that indicates the required total size expressed in the same units as in the huge_pages_resources_property in the VNFD that indicates the valid values for required total size for the particular hugepage size. See note.\n", + "type": "object", + "additionalProperties": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + } + }, + "virtualComputeDescData": { + "description": "This type represents selected values for capacity related VDU attributes of the virtual compute resource of a VM.\n* NOTE: At least one of the attributes shall be present.\n", + "type": "object", + "required": [ + "resourceTemplateId" + ], + "oneOf": [ + { + "required": [ + "resourceTemplateId" + ] + }, + { + "required": [ + "numVirtualCpu" + ] + }, + { + "required": [ + "virtualMemSize" + ] + }, + { + "required": [ + "sizeOfVirtualDisk" + ] + }, + { + "required": [ + "hugePagesRequirements" + ] + } + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "numVirtualCpu": { + "description": "Number of virtual CPUs. See note.\n", + "type": "integer" + }, + "virtualMemSize": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "sizeOfVirtualDisk": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "hugePagesRequirements": { + "description": "Map of the total size values required for all the hugepages of the size indicated in the key. The key is a string and corresponds to one of the values of the hugepage sizes indicated in the huge_pages_requirements property in the VNFD for this virtual compute descriptor. The value is a number that indicates the required total size expressed in the same units as in the huge_pages_requirements property in the VNFD that indicates the valid values for required total size for the particular hugepage size. See note.\n", + "type": "object", + "additionalProperties": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + }, + "virtualStorageDescData": { + "description": "Indicates the value for the storage size related attribute in an VirtualStorageDesc. It shall be present when the attribute 'type' indicates STORAGE and absent otherwise.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes of the virtual storage resource. \n", + "type": "object", + "required": [ + "resourceTemplateId", + "sizeOfStorage" + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "sizeOfStorage": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + } + } + } + }, + "extCpInfo": { + "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk. See note 7.\n", + "type": "array", + "minItems": 1, + "items": { + "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n ΓÇ£extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "type": "object", + "required": [ + "id", + "cpdId", + "cpConfigId", + "cpProtocolInfo" + ], + "oneOf": [ + { + "required": [ + "associatedVnfcCpId" + ] + }, + { + "required": [ + "associatedVipCpId" + ] + }, + { + "required": [ + "associatedVnfVirtualLinkId" + ] + } + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", "type": "string" }, "ipAddresses": { @@ -288,6 +782,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -360,7 +866,7 @@ "format": "IP" }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", "type": "string" } } @@ -399,6 +905,10 @@ "description": "An identifier with the intention of being globally unique.\n", "type": "string" } + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } } } @@ -407,7 +917,7 @@ "description": "VIP CPs that are part of the VNF instance. Shall be present when that particular VIP CP of the VNFC instance is associated to an external CP of the VNF instance.\nMay be present otherwise.\n", "type": "array", "items": { - "description": "This type provides information related to virtual IP CP.\nNOTE 1:\tIt is possible that there is no associated VnfcCp because the virtual IP CP is available but not associated yet. NOTE 2: If only the value or the presence of this attribute is changed in the \"VipCpInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVipCp\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "description": "This type provides information related to virtual IP CP.\nNOTE 1:\tIt is possible that there is no associated VnfcCp because the VIP CP is available but not associated yet. NOTE 2: If only the value or the presence of this attribute is changed in the \"VipCpInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVipCp\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", "type": "object", "required": [ "cpInstanceId", @@ -463,18 +973,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -493,6 +991,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -565,7 +1075,7 @@ "format": "IP" }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", "type": "string" } } @@ -574,7 +1084,7 @@ } }, "associatedVnfcCpIds": { - "description": "Identifiers of the VnfcCps that share the virtual IP addresse allocated to the virtual IP CP instance. See note.\n", + "description": "Identifiers of the VnfcCps that share the virtual IP address allocated to the VIP CP instance. See note.\n", "type": "array", "items": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -596,7 +1106,7 @@ "description": "Virtual CPs that are part of the VNF instance. Shall be present when a particular virtual CP is associated to an external CP of the VNF instance. May be present otherwise.\n", "type": "array", "items": { - "description": "This type provides information related to a virtual CP instance of a VNF.\nNOTE: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\n", + "description": "This type provides information related to a virtual CP instance of a VNF.\n* NOTE 1: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\n* NOTE 2: The information can be omitted because it is already available as part of the external CP information in the\n VnfExtCpInfo structure.\n", "type": "object", "required": [ "cpInstanceId", @@ -665,7 +1175,7 @@ "type": "string" }, "cpProtocolInfo": { - "description": "Protocol information for this CP. There shall be one cpProtocolInfo for each layer protocol supported.\n", + "description": "Protocol information for this CP. There shall be one cpProtocolInfo for each layer protocol supported. This attribute may be omitted if the virtual CP is exposed as an external CP. See note 2.\n", "type": "array", "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", @@ -697,18 +1207,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -727,6 +1225,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -799,7 +1309,7 @@ "format": "IP" }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", "type": "string" } } @@ -1021,7 +1531,7 @@ "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", "type": "array", "items": { - "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n", + "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n* NOTE 5: Subports need not be used for containerized VNFCs. The application container can send and receive IP\n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster\n network has been configured appropriately. Thus, no individual cpConfig, except the one representing the\n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 6: In the case that the cloud native template included in the MCIOP describes the set of VNFC instances, for\n containerized VNFCs individual connection points need not be configured for each VNFC instance. It is only\n required to configure one \"cpConfig\" per \"cpdId\", not per VNFC instance. The case of using, for a scalable\n VDU, a cloud native template in the MCIOP that describes one single VNFC instance is not specified in the\n present document version.\n", "type": "object", "required": [ "cpdId" @@ -1032,10 +1542,10 @@ "type": "string" }, "cpConfig": { - "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3 and 4.\n", + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5 and 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the\n \"resourceHandle\" attribute in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -1064,7 +1574,7 @@ "type": "string" }, "createExtLinkPort": { - "description": "Indicates to the VNFM the need to create a dedicated link port for the external CP. If set to True, the VNFM shall create a link port. If set to False, the VNFM shall not create a link port. This attribute is only applicable for external CP instances without a floating IP address that expose a virtual IP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", + "description": "Indicates to the VNFM the need to create a dedicated link port for the external CP. If set to True, the VNFM shall create a link port. If set to False, the VNFM shall not create a link port. This attribute is only applicable for external CP instances without a floating IP address that expose a VIP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", "type": "boolean" }, "cpProtocolData": { @@ -1086,7 +1596,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents network address data for IP over Ethernet to assign to the external CP. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI's transport technology.\n", + "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -1100,23 +1610,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "fixedAddresses" - ] - }, - { - "required": [ - "numDynamicAddresses" - ] - }, - { - "required": [ - "ipAddressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -1143,6 +1636,23 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -1195,7 +1705,7 @@ } }, "virtualCpAddress": { - "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for Kubernetes® that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp and the addressPoolName attributes shall not be present at the same time.\n", + "description": "This type represents network address data for a virtual CP.\n* NOTE 1: The loadBalancerIp and the loadBalancerSourceRanges attributes are only used if the \n CIS cluster is set up to be able to configure an external load balancer. Otherwise, it shall be ignored.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP \n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for \n Kubernetes┬« that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp, addressPoolName and the externalIp attributes shall not be present at the same time.\n", "type": "object", "required": [ "type" @@ -1214,12 +1724,37 @@ "type": "string", "format": "IP" }, + "externalIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which the CIS cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", "type": "string" - } - } - } + }, + "loadBalancerSourceRanges": { + "description": "List of client IP address ranges allowed to access an external load balancer. See note 1.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + } + } + } } } }, @@ -1595,518 +2130,538 @@ "type": "string" }, "vnfcResourceInfo": { - "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure \n of information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n - For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n - For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\n\n* NOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that\n exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly\n to an external VL.\n* NOTE 3:\tThe information can be omitted because it is already available as part of the external CP information. * NOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\" structure by \n an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVnfc\"\n structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to \n this LCM operation occurrence.\n* NOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment \n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build \n a link redundant mated pair in SR-IOV cases.\n* NOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", - "type": "object", - "required": [ - "id", - "vduId", - "computeResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vduId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "computeResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "storageResourceIds": { - "description": "References to the VirtualStorage resources or references to Storage MCIO(s). The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", - "type": "array", - "items": { + "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure \n of information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n - For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n - For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\n\n* NOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that\n exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly\n to an external VL.\n* NOTE 3:\tThe information can be omitted because it is already available as part of the external CP information. * NOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\" structure by \n an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVnfc\"\n structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to \n this LCM operation occurrence.\n* NOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment \n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build \n a link redundant mated pair in SR-IOV cases.\n* NOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace. * NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP\n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster\n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing the\n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n", + "type": "object", + "required": [ + "id", + "vduId", + "computeResource" + ], + "properties": { + "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfcCpInfo": { - "description": "All the CPs of the VNFC instance.\n", - "type": "array", - "items": { - "type": "object", + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "computeResource": { "required": [ - "id", - "cpdId" + "resourceId" ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "vnfExtCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", "type": "string" }, - "cpProtocolInfo": { - "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information. See note 3.\n", - "type": "array", - "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", - "type": "object", - "required": [ - "layerProtocol" - ], - "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET", - "IP_FOR_VIRTUAL_CP" - ] - }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", - "type": "object", - "anyOf": [ - { - "required": [ - "macAddress" - ] - }, - { - "required": [ - "ipAddresses" - ] - } - ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "segmentationId": { - "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", - "type": "string" - }, - "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", - "type": "array", - "items": { - "type": "object", + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "storageResourceIds": { + "description": "References to the VirtualStorage resources or references to Storage MCIO(s). The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfcCpInfo": { + "description": "All the CPs of the VNFC instance. See note 7.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "cpdId" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfExtCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information. See note 3.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", + "type": "object", + "anyOf": [ + { "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] } - }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" - }, - "addressRange": { - "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "array", + "items": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", "type": "string", "format": "IP" } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" } - }, - "subnetId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" } } } } - } - }, - "virtualCpAddress": { - "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "loadBalancerIp": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", - "type": "string" + }, + "virtualCpAddress": { + "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "type": "string" + } } } } } - } - }, - "vnfLinkPortId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "parentCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", - "type": "array", - "items": { + }, + "vnfLinkPortId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "parentCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "netAttDefResourceId": { + "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "certificateContentId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" } } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" } } }, "vnfVirtualLinkResourceInfo": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance. NOTE: If only the value or the presence of this attribute is changed in the \"VnfVirtualLinkResourceInfo\" \n structure by an LCM operation occurrence, this does not represent a change that requires including a \n related \"AffectedVirtualLink\" structure in the VNF LCM operation occurrence notifications or the \n \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", - "type": "object", - "required": [ - "id", - "vnfVirtualLinkDescId", - "networkResource", - "vnfLinkPorts" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfVirtualLinkDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "networkResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "description": "Information about the virtualised network resources used by the VLs of the VNF instance. See note 6. Even though externally-managed internal VLs are also used for VNF-internal connectivity, they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance. NOTE: If only the value or the presence of this attribute is changed in the \"VnfVirtualLinkResourceInfo\" \n structure by an LCM operation occurrence, this does not represent a change that requires including a \n related \"AffectedVirtualLink\" structure in the VNF LCM operation occurrence notifications or the \n \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource", + "vnfLinkPorts" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfLinkPorts": { + "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", + "type": "array", + "items": { + "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", "type": "object", + "required": [ + "id", + "resourceHandle" + ], "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + }, + "vipCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + "trunkResourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" } } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfLinkPorts": { - "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", - "type": "array", - "items": { - "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", - "type": "object", + } + } + }, + "virtualStorageResourceInfo": { + "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\nNOTE: If only the value or the presence of this attribute is changed in the \"VirtualStorageResourceInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVirtualStorage\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "type": "object", + "required": [ + "id", + "virtualStorageDescId", + "storageResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "virtualStorageDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "storageResource": { "required": [ - "id", - "resourceHandle" + "resourceId" ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "resourceHandle": { - "required": [ - "resourceId" - ], + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", "type": "string" }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", "type": "string" }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } } }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpInstanceType": { - "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", - "type": "string", - "enum": [ - "VNFC_CP", - "EXT_CP" - ] - }, - "vipCpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "trunkResourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", "type": "string" } } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "virtualStorageResourceInfo": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\nNOTE: If only the value or the presence of this attribute is changed in the \"VirtualStorageResourceInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVirtualStorage\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", - "type": "object", - "required": [ - "id", - "virtualStorageDescId", - "storageResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "virtualStorageDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "storageResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" } } }, @@ -2146,10 +2701,10 @@ } }, "mcioInfo": { - "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", + "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", "type": "array", "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", "type": "object", "required": [ "mcioId", @@ -2187,7 +2742,8 @@ "type": "string", "enum": [ "Deployment", - "StatefulSet" + "StatefulSet", + "DaemonSet" ] }, "desiredInstances": { @@ -2198,6 +2754,76 @@ "description": "Number of available MCIO instances.\n", "type": "integer" }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "vnfPaasServiceInfo": { + "description": "Information on the PaaS Services assigned and used by the VNF instance.\n", + "type": "array", + "items": { + "description": "This type provides information about a PaaS Service that is used by a VNF instance. The PaasServiceInfo is comprised of various sets of information. Some information comes from the VNFD, other information comes from the PaaS Service assets provided by the NFVO to the VNFM, and other information is provided at runtime information about the usage of the PaaS Service.\n", + "type": "object", + "required": [ + "id", + "paasServiceId", + "paasServiceType", + "paasServiceRequestId", + "paasServiceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "paasServiceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "paasServiceType": { + "description": "The type of PaaS Service. The value of this attribute is expected to be matched against values of the registered PaaS Services in the PSR.\n", + "type": "string" + }, + "paasServiceVersion": { + "description": "A version.\n", + "type": "string" + }, + "paasServiceRequestId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "paasServiceHandle": { + "description": "This type provides information enabling the access and use of the PaaS Service by the VNF instance. The type and format of the handle depends on the form that the PaaS Service is formed.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, "additionalInfo": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" diff --git a/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json index 41c57dc7..85e04634 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json @@ -21,9 +21,9 @@ "required": [ "id", "vnfInstanceId", - "creationStartedAt", + "triggeredAt", "vnfdId", - "vnfInstance", + "vnfInfo", "vnfcSnapshots" ], "properties": { @@ -50,7 +50,7 @@ "type": "string" }, "vnfInstance": { - "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tVNF configurable properties are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n", + "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tThese attributes are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n* NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual extCpInfo, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the ΓÇ£scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the VNF \n LCM operation explicitly indicates the scale level for the aspect.\n", "type": "object", "required": [ "id", @@ -99,6 +99,281 @@ "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" }, + "certificateInfo": { + "description": "This type provides input information related to certificate and certificate management.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "certificateConfigurationInfo": { + "description": "This type provides input information related to certificate management.\n", + "type": "object", + "required": [ + "securityPolicy" + ], + "properties": { + "certificateBaseProfile": { + "description": "This type provides input information to override certificate base profile for certificate management\nNOTE : At least one overriding attributes shall be present, otherwise shall be absent.\n", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "issuer": { + "type": "string", + "description": "Issuer of certificates. See note." + }, + "issuerUniqueIdentifier": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "subject": { + "description": "This type provides input information related to subject of certificate.\n* NOTE: At least one overriding attributes shall be present, otherwise shall be absent.\n", + "type": "object", + "properties": { + "commonName": { + "description": "Information of certification target subject FQDN. See note.", + "type": "string" + }, + "organization": { + "description": "Information of certification target subject Organization. See note.", + "type": "string" + }, + "country": { + "description": "Information of certification target subject Country. See note.", + "type": "string" + }, + "state": { + "description": "Information of certification target subject State. See note.", + "type": "string" + }, + "locality": { + "description": "Information of certification target subject Locality. See note.", + "type": "string" + }, + "emailAddress": { + "description": "Information of certification contact email address. See note.", + "type": "string" + } + } + }, + "subjectUniqueIdentifier": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "basicConstraints": { + "type": "string", + "description": "Basic constraints of certificates. See note.\n" + }, + "issuerAltName": { + "description": "Alternative name of issuer of certificates in this NS. See note.", + "type": "array", + "items": { + "type": "string" + } + }, + "subjectAltName": { + "description": "Alternative name of subject of certificates. Shall be present when this certificate is used for encrypted communication using IP address and subjectAltName attribute of CertificateBaseProfile in CertificateDesc of VNFD is empty (see ETSI GS NFV-IFA 011 [7],clause 7.1.19.4). See note", + "type": "array", + "items": { + "type": "string" + } + }, + "nameConstraints": { + "description": "Name constraints of certificates. See note.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "securityPolicy": { + "description": "Information for security policy to be satisfied for certificate.\n", + "type": "array", + "items": { + "description": "This type provides input information related to security policy for certificate management.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "maxValidityPeriod": { + "description": "Allowed max validity period for certificates.", + "type": "integer" + }, + "allowedAlgorithm": { + "description": "Allowed signature algorithm.", + "type": "string" + }, + "minimumKeyLength": { + "description": "Minimum key length for certificates.", + "type": "integer" + } + } + } + }, + "delegationSupportedCertificateManagements": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + }, + "cmfInfo": { + "description": "This type provides input information related to CMF for certificate management.\n", + "type": "object", + "required": [ + "id", + "endPoint", + "supportedProtocol" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "endPoint": { + "description": "End point of CMF instance.", + "type": "object", + "required": [ + "ipAddress", + "link" + ], + "properties": { + "ipAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "link": { + "description": "This type represents a link to a resource using an absolute URI.\n", + "type": "object", + "required": [ + "href" + ], + "properties": { + "href": { + "description": "String formatted according to IETF RFC 3986.\n", + "type": "string" + } + } + } + } + }, + "supportedProtocols": { + "description": "Supported protocol by CMF instance.", + "type": "array", + "items": { + "type": "string", + "enum": [ + "CMP", + "CMPv2", + "EST", + "SCEP" + ] + } + }, + "certificateChain": { + "description": "Certificate chain that this CMF provides.", + "type": "array", + "items": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + } + } + } + } + } + }, + "certificateContents": { + "description": "Information for contents of issued certificates. The information contained in this attribute may be updated over time during the VNF LCM, e.g. certificate(s) renewal.\n", + "type": "array", + "items": { + "description": "This type provides input information related to certificate content.\n", + "type": "object", + "required": [ + "id", + "certificateDescId", + "certificateType" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "certficateDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "certificateType": { + "description": "Type of this certificate.", + "type": "string", + "enum": [ + "VNFCI_CERT", + "VNFOAM_CERT" + ] + }, + "supportedCertificateManagements": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + }, + "version": { + "description": "A version.\n", + "type": "string" + }, + "serialNumber": { + "description": "Serial number of this certificate.", + "type": "integer" + }, + "signatureAlgorithm": { + "description": "Algorithm of this certificate's signature.", + "type": "string" + }, + "issuer": { + "description": "Issuer of this certificate.", + "type": "string" + }, + "notBefore": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "notAfter": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" + }, + "subject": { + "description": "Subject of this certificate.", + "type": "string" + }, + "publicKeyAlgorithm": { + "description": "Algorithm of this certificate's public key.", + "type": "string" + }, + "publicKey": { + "description": "Public key of this certificate.", + "type": "string" + }, + "certificateExtensions": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + } + } + }, "instantiationState": { "description": "The instantiation state of the VNF.\n", "type": "string", @@ -129,7 +404,7 @@ ] }, "scaleStatus": { - "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect. This attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling.\n", + "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect. This attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling. For an aspect that has not been deployed because the related deployableModule has not been selected, it indicates the scale level that has been requested in the instantiation or in a scaling operation, or, if none has been requested in any of them, the scale level applicable to the aspect based on the default instantiation level. See note 8.\n", "type": "array", "items": { "description": "This type represents the scale level of a VNF instance related to a scaling aspect.\n", @@ -144,12 +419,12 @@ "type": "string" }, "vnfdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "scaleToLevel": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" } } } @@ -170,116 +445,335 @@ "type": "string" }, "vnfdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "scaleToLevel": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" } } } }, - "extCpInfo": { - "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", + "selectedDeployableModule": { + "description": "References a currently selected deployable module, as defined in the VNFD, that has already completed the instantiation of its VNFCs\n", "type": "array", - "minItems": 1, "items": { - "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n ΓÇ£extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + } + }, + "resourceCapacityDefinition": { + "description": "Shows current values of VDU attributes related to resource capacity, if different to the default values from the VNFD, as indicated in the (one or more) request(s) of all completed VNF LCM operation(s) that contain this attribute. If an attribute value has been modified multiple times, only the last value is shown. The values indicated in this attribute are applicable to all VNFC instances based on the VDU to which the resourceCapacityDefinition is related.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes.\n* NOTE: Resource definitions not related to a VDU are not considered in this version of the present document.\n", "type": "object", "required": [ - "id", - "cpdId", - "cpConfigId", - "cpProtocolInfo" + "type" ], - "oneOf": [ - { - "required": [ - "associatedVnfcCpId" - ] - }, - { - "required": [ - "associatedVipCpId" - ] + "properties": { + "tag": { + "description": "Tag assigned by the issuer of a VNF LCM operation request that contains this data type with values to be applied to a VDU. It is used for tracking purposes. The tag is preserved in the run time record as long as at least one value of the capacity related attributes associated with that tag is still valid, i.e., it has not been modified by a later VNF LCM operation request. At most one tag can be included when the data type is used in a VNF LCM operation request. When the data type is used in the VnfInstance data type it may contain multiple tags, namely those provided in VNF LCM requests, if at least one of the values provided in that request associated to that tag is still applicable in the VNFCs created from this VDU, i.e., it has not been modified by a later request.", + "type": "array", + "items": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + } }, - { - "required": [ - "associatedVnfVirtualLinkId" + "type": { + "description": "Type of the resource definition referenced. VALUES ΓÇó\tCOMPUTE ΓÇó\tSTORAGE ΓÇó\tOSCONTAINER", + "type": "string", + "enum": [ + "COMPUTE", + "STORAGE", + "OSCONTAINER" ] - } - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" }, - "cpdId": { + "vduId": { "description": "An identifier that is unique within a VNF descriptor.\n", "type": "string" }, - "cpConfigId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "cpProtocolInfo": { - "description": "Network protocol information for this CP.\n", + "osContainerDescData": { + "description": "Indicates values for resource capacity related attributes in an OsContainerDesc. It shall be present when the attribute ΓÇÿtypeΓÇÖ indicates OSCONTAINER and absent otherwise.", "type": "array", "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "description": "This type represents selected values for capacity related VDU attributes of an OsContainer resource.\n* NOTE: At least one of the attributes shall be present.\n", "type": "object", "required": [ - "layerProtocol" + "resourceTemplateId" ], - "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET", - "IP_FOR_VIRTUAL_CP" + "oneOf": [ + { + "required": [ + "resourceTemplateId" ] }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", - "type": "object", - "anyOf": [ - { - "required": [ - "macAddress" - ] - }, - { - "required": [ - "ipAddresses" - ] - } - ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "segmentationId": { - "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + { + "required": [ + "requestedCpuResources" + ] + }, + { + "required": [ + "requestedMemoryResources" + ] + }, + { + "required": [ + "requestedEphemeralStorageResources" + ] + }, + { + "required": [ + "extendedResourceRequests" + ] + }, + { + "required": [ + "cpuResourceLimit" + ] + }, + { + "required": [ + "memoryResourceLimit" + ] + }, + { + "required": [ + "ephemeralStorageResourceLimit" + ] + }, + { + "required": [ + "hugePageResources" + ] + } + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "requestedCpuResources": { + "description": "Number of CPU resources requested for the container in milli-CPU. See note.\n", + "type": "integer" + }, + "requestedMemoryResources": { + "description": "Amount of memory resources requested for the container expressed in the same units as specified in the requested_memory_resources_valid_values property in VNFD for this container descriptor. See note.\n", + "type": "array", + "items": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + }, + "requestedEphemeralStorageResources": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "extendedResourceRequests": { + "description": "Map of the amount of extended resources of the type indicated in the key. The key is a string that identifies an extended resource indicated in the extended_resource_requests property in the VNFD for this container descriptor. The value is an integer that indicates the required amount for a particular extended resource.See note.\n", + "type": "object", + "additionalProperties": { + "type": "integer" + } + }, + "cpuResourceLimit": { + "description": "Number of CPU resources the container can maximally use in milli-CPU. See note. \n", + "type": "integer" + }, + "memoryResourceLimit": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "ephemeralStorageResourceLimit": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "hugePageResources": { + "description": "Map of the total size values required for all the hugepages of the size indicated in the key. The key is a string and corresponds to one of the values of the hugepage sizes indicated in the huge_pages_resources property in the VNFD for this container descriptor. The value is a number that indicates the required total size expressed in the same units as in the huge_pages_resources_property in the VNFD that indicates the valid values for required total size for the particular hugepage size. See note.\n", + "type": "object", + "additionalProperties": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + } + }, + "virtualComputeDescData": { + "description": "This type represents selected values for capacity related VDU attributes of the virtual compute resource of a VM.\n* NOTE: At least one of the attributes shall be present.\n", + "type": "object", + "required": [ + "resourceTemplateId" + ], + "oneOf": [ + { + "required": [ + "resourceTemplateId" + ] + }, + { + "required": [ + "numVirtualCpu" + ] + }, + { + "required": [ + "virtualMemSize" + ] + }, + { + "required": [ + "sizeOfVirtualDisk" + ] + }, + { + "required": [ + "hugePagesRequirements" + ] + } + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "numVirtualCpu": { + "description": "Number of virtual CPUs. See note.\n", + "type": "integer" + }, + "virtualMemSize": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "sizeOfVirtualDisk": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "hugePagesRequirements": { + "description": "Map of the total size values required for all the hugepages of the size indicated in the key. The key is a string and corresponds to one of the values of the hugepage sizes indicated in the huge_pages_requirements property in the VNFD for this virtual compute descriptor. The value is a number that indicates the required total size expressed in the same units as in the huge_pages_requirements property in the VNFD that indicates the valid values for required total size for the particular hugepage size. See note.\n", + "type": "object", + "additionalProperties": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + }, + "virtualStorageDescData": { + "description": "Indicates the value for the storage size related attribute in an VirtualStorageDesc. It shall be present when the attribute 'type' indicates STORAGE and absent otherwise.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes of the virtual storage resource. \n", + "type": "object", + "required": [ + "resourceTemplateId", + "sizeOfStorage" + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "sizeOfStorage": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + } + } + } + }, + "extCpInfo": { + "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk. See note 7.\n", + "type": "array", + "minItems": 1, + "items": { + "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n ΓÇ£extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "type": "object", + "required": [ + "id", + "cpdId", + "cpConfigId", + "cpProtocolInfo" + ], + "oneOf": [ + { + "required": [ + "associatedVnfcCpId" + ] + }, + { + "required": [ + "associatedVipCpId" + ] + }, + { + "required": [ + "associatedVnfVirtualLinkId" + ] + } + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "cpConfigId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", + "type": "object", + "anyOf": [ + { + "required": [ + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", "type": "string" }, "ipAddresses": { @@ -290,6 +784,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -362,7 +868,7 @@ "format": "IP" }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", "type": "string" } } @@ -401,6 +907,10 @@ "description": "An identifier with the intention of being globally unique.\n", "type": "string" } + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } } } @@ -409,7 +919,7 @@ "description": "VIP CPs that are part of the VNF instance. Shall be present when that particular VIP CP of the VNFC instance is associated to an external CP of the VNF instance.\nMay be present otherwise.\n", "type": "array", "items": { - "description": "This type provides information related to virtual IP CP.\nNOTE 1:\tIt is possible that there is no associated VnfcCp because the virtual IP CP is available but not associated yet. NOTE 2: If only the value or the presence of this attribute is changed in the \"VipCpInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVipCp\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "description": "This type provides information related to virtual IP CP.\nNOTE 1:\tIt is possible that there is no associated VnfcCp because the VIP CP is available but not associated yet. NOTE 2: If only the value or the presence of this attribute is changed in the \"VipCpInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVipCp\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", "type": "object", "required": [ "cpInstanceId", @@ -465,18 +975,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -495,6 +993,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -567,7 +1077,7 @@ "format": "IP" }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", "type": "string" } } @@ -576,7 +1086,7 @@ } }, "associatedVnfcCpIds": { - "description": "Identifiers of the VnfcCps that share the virtual IP addresse allocated to the virtual IP CP instance. See note.\n", + "description": "Identifiers of the VnfcCps that share the virtual IP address allocated to the VIP CP instance. See note.\n", "type": "array", "items": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -598,7 +1108,7 @@ "description": "Virtual CPs that are part of the VNF instance. Shall be present when a particular virtual CP is associated to an external CP of the VNF instance. May be present otherwise.\n", "type": "array", "items": { - "description": "This type provides information related to a virtual CP instance of a VNF.\nNOTE: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\n", + "description": "This type provides information related to a virtual CP instance of a VNF.\n* NOTE 1: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\n* NOTE 2: The information can be omitted because it is already available as part of the external CP information in the\n VnfExtCpInfo structure.\n", "type": "object", "required": [ "cpInstanceId", @@ -667,7 +1177,7 @@ "type": "string" }, "cpProtocolInfo": { - "description": "Protocol information for this CP. There shall be one cpProtocolInfo for each layer protocol supported.\n", + "description": "Protocol information for this CP. There shall be one cpProtocolInfo for each layer protocol supported. This attribute may be omitted if the virtual CP is exposed as an external CP. See note 2.\n", "type": "array", "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", @@ -699,18 +1209,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -729,6 +1227,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -801,7 +1311,7 @@ "format": "IP" }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", "type": "string" } } @@ -1023,7 +1533,7 @@ "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", "type": "array", "items": { - "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n", + "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n* NOTE 5: Subports need not be used for containerized VNFCs. The application container can send and receive IP\n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster\n network has been configured appropriately. Thus, no individual cpConfig, except the one representing the\n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 6: In the case that the cloud native template included in the MCIOP describes the set of VNFC instances, for\n containerized VNFCs individual connection points need not be configured for each VNFC instance. It is only\n required to configure one \"cpConfig\" per \"cpdId\", not per VNFC instance. The case of using, for a scalable\n VDU, a cloud native template in the MCIOP that describes one single VNFC instance is not specified in the\n present document version.\n", "type": "object", "required": [ "cpdId" @@ -1034,10 +1544,10 @@ "type": "string" }, "cpConfig": { - "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3 and 4.\n", + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5 and 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the\n \"resourceHandle\" attribute in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -1066,7 +1576,7 @@ "type": "string" }, "createExtLinkPort": { - "description": "Indicates to the VNFM the need to create a dedicated link port for the external CP. If set to True, the VNFM shall create a link port. If set to False, the VNFM shall not create a link port. This attribute is only applicable for external CP instances without a floating IP address that expose a virtual IP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", + "description": "Indicates to the VNFM the need to create a dedicated link port for the external CP. If set to True, the VNFM shall create a link port. If set to False, the VNFM shall not create a link port. This attribute is only applicable for external CP instances without a floating IP address that expose a VIP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", "type": "boolean" }, "cpProtocolData": { @@ -1088,7 +1598,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents network address data for IP over Ethernet to assign to the external CP. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI's transport technology.\n", + "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -1102,23 +1612,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "fixedAddresses" - ] - }, - { - "required": [ - "numDynamicAddresses" - ] - }, - { - "required": [ - "ipAddressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -1145,6 +1638,23 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -1197,7 +1707,7 @@ } }, "virtualCpAddress": { - "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for Kubernetes® that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp and the addressPoolName attributes shall not be present at the same time.\n", + "description": "This type represents network address data for a virtual CP.\n* NOTE 1: The loadBalancerIp and the loadBalancerSourceRanges attributes are only used if the \n CIS cluster is set up to be able to configure an external load balancer. Otherwise, it shall be ignored.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP \n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for \n Kubernetes┬« that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp, addressPoolName and the externalIp attributes shall not be present at the same time.\n", "type": "object", "required": [ "type" @@ -1216,12 +1726,37 @@ "type": "string", "format": "IP" }, + "externalIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which the CIS cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", "type": "string" - } - } - } + }, + "loadBalancerSourceRanges": { + "description": "List of client IP address ranges allowed to access an external load balancer. See note 1.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + } + } + } } } }, @@ -1597,518 +2132,538 @@ "type": "string" }, "vnfcResourceInfo": { - "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure \n of information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n - For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n - For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\n\n* NOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that\n exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly\n to an external VL.\n* NOTE 3:\tThe information can be omitted because it is already available as part of the external CP information. * NOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\" structure by \n an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVnfc\"\n structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to \n this LCM operation occurrence.\n* NOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment \n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build \n a link redundant mated pair in SR-IOV cases.\n* NOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", - "type": "object", - "required": [ - "id", - "vduId", - "computeResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vduId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "computeResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "storageResourceIds": { - "description": "References to the VirtualStorage resources or references to Storage MCIO(s). The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", - "type": "array", - "items": { + "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure \n of information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n - For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n - For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\n\n* NOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that\n exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly\n to an external VL.\n* NOTE 3:\tThe information can be omitted because it is already available as part of the external CP information. * NOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\" structure by \n an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVnfc\"\n structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to \n this LCM operation occurrence.\n* NOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment \n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build \n a link redundant mated pair in SR-IOV cases.\n* NOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace. * NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP\n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster\n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing the\n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n", + "type": "object", + "required": [ + "id", + "vduId", + "computeResource" + ], + "properties": { + "id": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfcCpInfo": { - "description": "All the CPs of the VNFC instance.\n", - "type": "array", - "items": { - "type": "object", + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "computeResource": { "required": [ - "id", - "cpdId" + "resourceId" ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "vnfExtCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", "type": "string" }, - "cpProtocolInfo": { - "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information. See note 3.\n", - "type": "array", - "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", - "type": "object", - "required": [ - "layerProtocol" - ], - "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET", - "IP_FOR_VIRTUAL_CP" - ] - }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", - "type": "object", - "anyOf": [ - { - "required": [ - "macAddress" - ] - }, - { - "required": [ - "ipAddresses" - ] - } - ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "segmentationId": { - "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", - "type": "string" - }, - "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", - "type": "array", - "items": { - "type": "object", + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "storageResourceIds": { + "description": "References to the VirtualStorage resources or references to Storage MCIO(s). The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfcCpInfo": { + "description": "All the CPs of the VNFC instance. See note 7.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "cpdId" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfExtCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information. See note 3.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", + "type": "object", + "anyOf": [ + { "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] } - }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" - }, - "addressRange": { - "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "array", + "items": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", "type": "string", "format": "IP" } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" } - }, - "subnetId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" } } } } - } - }, - "virtualCpAddress": { - "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "loadBalancerIp": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", - "type": "string" + }, + "virtualCpAddress": { + "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "type": "string" + } } } } } - } - }, - "vnfLinkPortId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "parentCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", - "type": "array", - "items": { + }, + "vnfLinkPortId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "parentCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "netAttDefResourceId": { + "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "certificateContentId": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" } } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" } } }, "vnfVirtualLinkResourceInfo": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance. NOTE: If only the value or the presence of this attribute is changed in the \"VnfVirtualLinkResourceInfo\" \n structure by an LCM operation occurrence, this does not represent a change that requires including a \n related \"AffectedVirtualLink\" structure in the VNF LCM operation occurrence notifications or the \n \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", - "type": "object", - "required": [ - "id", - "vnfVirtualLinkDescId", - "networkResource", - "vnfLinkPorts" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfVirtualLinkDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "networkResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "description": "Information about the virtualised network resources used by the VLs of the VNF instance. See note 6. Even though externally-managed internal VLs are also used for VNF-internal connectivity, they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance. NOTE: If only the value or the presence of this attribute is changed in the \"VnfVirtualLinkResourceInfo\" \n structure by an LCM operation occurrence, this does not represent a change that requires including a \n related \"AffectedVirtualLink\" structure in the VNF LCM operation occurrence notifications or the \n \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource", + "vnfLinkPorts" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfLinkPorts": { + "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", + "type": "array", + "items": { + "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", "type": "object", + "required": [ + "id", + "resourceHandle" + ], "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + }, + "vipCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + "trunkResourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" } } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfLinkPorts": { - "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", - "type": "array", - "items": { - "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", - "type": "object", + } + } + }, + "virtualStorageResourceInfo": { + "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\nNOTE: If only the value or the presence of this attribute is changed in the \"VirtualStorageResourceInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVirtualStorage\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "type": "object", + "required": [ + "id", + "virtualStorageDescId", + "storageResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "virtualStorageDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "storageResource": { "required": [ - "id", - "resourceHandle" + "resourceId" ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "resourceHandle": { - "required": [ - "resourceId" - ], + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", "type": "string" }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", "type": "string" }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } } }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpInstanceType": { - "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", - "type": "string", - "enum": [ - "VNFC_CP", - "EXT_CP" - ] - }, - "vipCpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "trunkResourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", "type": "string" } } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "virtualStorageResourceInfo": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\nNOTE: If only the value or the presence of this attribute is changed in the \"VirtualStorageResourceInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVirtualStorage\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", - "type": "object", - "required": [ - "id", - "virtualStorageDescId", - "storageResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "virtualStorageDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "storageResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" } } }, @@ -2148,10 +2703,10 @@ } }, "mcioInfo": { - "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", + "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", "type": "array", "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", "type": "object", "required": [ "mcioId", @@ -2189,7 +2744,8 @@ "type": "string", "enum": [ "Deployment", - "StatefulSet" + "StatefulSet", + "DaemonSet" ] }, "desiredInstances": { @@ -2200,6 +2756,76 @@ "description": "Number of available MCIO instances.\n", "type": "integer" }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "vnfPaasServiceInfo": { + "description": "Information on the PaaS Services assigned and used by the VNF instance.\n", + "type": "array", + "items": { + "description": "This type provides information about a PaaS Service that is used by a VNF instance. The PaasServiceInfo is comprised of various sets of information. Some information comes from the VNFD, other information comes from the PaaS Service assets provided by the NFVO to the VNFM, and other information is provided at runtime information about the usage of the PaaS Service.\n", + "type": "object", + "required": [ + "id", + "paasServiceId", + "paasServiceType", + "paasServiceRequestId", + "paasServiceHandle" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "paasServiceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "paasServiceType": { + "description": "The type of PaaS Service. The value of this attribute is expected to be matched against values of the registered PaaS Services in the PSR.\n", + "type": "string" + }, + "paasServiceVersion": { + "description": "A version.\n", + "type": "string" + }, + "paasServiceRequestId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "paasServiceHandle": { + "description": "This type provides information enabling the access and use of the PaaS Service by the VNF instance. The type and format of the handle depends on the form that the PaaS Service is formed.\n", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + }, "additionalInfo": { "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" diff --git a/SOL002/VNFLifecycleManagement-API/schemas/subscription.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/subscription.schema.json index bd91d402..82649409 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/subscription.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/subscription.schema.json @@ -24,7 +24,7 @@ "oneOf": [ { "required": [ - "vnfdId" + "vnfdIds" ] }, { @@ -147,7 +147,7 @@ "description": "Match particular VNF lifecycle operation types for the notification of type VnfLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"VnfLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n", "type": "array", "items": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation \n", "type": "string", "enum": [ "INSTANTIATE", @@ -161,7 +161,8 @@ "MODIFY_INFO", "CREATE_SNAPSHOT", "REVERT_TO_SNAPSHOT", - "CHANGE_VNFPKG" + "CHANGE_VNFPKG", + "SELECT_DEPL_MODS" ] } }, diff --git a/SOL002/VNFLifecycleManagement-API/schemas/subscriptions.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/subscriptions.schema.json index ece4d04c..746d754e 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/subscriptions.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/subscriptions.schema.json @@ -26,7 +26,7 @@ "oneOf": [ { "required": [ - "vnfdId" + "vnfdIds" ] }, { @@ -149,7 +149,7 @@ "description": "Match particular VNF lifecycle operation types for the notification of type VnfLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"VnfLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n", "type": "array", "items": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation \n", "type": "string", "enum": [ "INSTANTIATE", @@ -163,7 +163,8 @@ "MODIFY_INFO", "CREATE_SNAPSHOT", "REVERT_TO_SNAPSHOT", - "CHANGE_VNFPKG" + "CHANGE_VNFPKG", + "SELECT_DEPL_MODS" ] } }, diff --git a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json index 4d240264..8cff67c8 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json @@ -1,5 +1,5 @@ { - "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tThese attributes are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n* NOTE 7:\tSubports need not be used for containerized VNFCs. The application container can send and receive IP\n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster\n network has been configured appropriately. Thus, no individual extCpInfo, except the one representing the\n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 8:\tFor a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the \"scaleStatus\" indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the VNF \n LCM operation explicitly indicates the scale level for the aspect.\n", + "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tThese attributes are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n* NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual extCpInfo, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the ΓÇ£scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the VNF \n LCM operation explicitly indicates the scale level for the aspect.\n", "type": "object", "required": [ "id", @@ -368,12 +368,12 @@ "type": "string" }, "vnfdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "scaleToLevel": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" } } } @@ -394,12 +394,12 @@ "type": "string" }, "vnfdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "scaleToLevel": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" } } } @@ -412,8 +412,231 @@ "type": "string" } }, + "resourceCapacityDefinition": { + "description": "Shows current values of VDU attributes related to resource capacity, if different to the default values from the VNFD, as indicated in the (one or more) request(s) of all completed VNF LCM operation(s) that contain this attribute. If an attribute value has been modified multiple times, only the last value is shown. The values indicated in this attribute are applicable to all VNFC instances based on the VDU to which the resourceCapacityDefinition is related.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes.\n* NOTE: Resource definitions not related to a VDU are not considered in this version of the present document.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "tag": { + "description": "Tag assigned by the issuer of a VNF LCM operation request that contains this data type with values to be applied to a VDU. It is used for tracking purposes. The tag is preserved in the run time record as long as at least one value of the capacity related attributes associated with that tag is still valid, i.e., it has not been modified by a later VNF LCM operation request. At most one tag can be included when the data type is used in a VNF LCM operation request. When the data type is used in the VnfInstance data type it may contain multiple tags, namely those provided in VNF LCM requests, if at least one of the values provided in that request associated to that tag is still applicable in the VNFCs created from this VDU, i.e., it has not been modified by a later request.", + "type": "array", + "items": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + } + }, + "type": { + "description": "Type of the resource definition referenced. VALUES ΓÇó\tCOMPUTE ΓÇó\tSTORAGE ΓÇó\tOSCONTAINER", + "type": "string", + "enum": [ + "COMPUTE", + "STORAGE", + "OSCONTAINER" + ] + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "osContainerDescData": { + "description": "Indicates values for resource capacity related attributes in an OsContainerDesc. It shall be present when the attribute ΓÇÿtypeΓÇÖ indicates OSCONTAINER and absent otherwise.", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes of an OsContainer resource.\n* NOTE: At least one of the attributes shall be present.\n", + "type": "object", + "required": [ + "resourceTemplateId" + ], + "oneOf": [ + { + "required": [ + "resourceTemplateId" + ] + }, + { + "required": [ + "requestedCpuResources" + ] + }, + { + "required": [ + "requestedMemoryResources" + ] + }, + { + "required": [ + "requestedEphemeralStorageResources" + ] + }, + { + "required": [ + "extendedResourceRequests" + ] + }, + { + "required": [ + "cpuResourceLimit" + ] + }, + { + "required": [ + "memoryResourceLimit" + ] + }, + { + "required": [ + "ephemeralStorageResourceLimit" + ] + }, + { + "required": [ + "hugePageResources" + ] + } + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "requestedCpuResources": { + "description": "Number of CPU resources requested for the container in milli-CPU. See note.\n", + "type": "integer" + }, + "requestedMemoryResources": { + "description": "Amount of memory resources requested for the container expressed in the same units as specified in the requested_memory_resources_valid_values property in VNFD for this container descriptor. See note.\n", + "type": "array", + "items": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + }, + "requestedEphemeralStorageResources": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "extendedResourceRequests": { + "description": "Map of the amount of extended resources of the type indicated in the key. The key is a string that identifies an extended resource indicated in the extended_resource_requests property in the VNFD for this container descriptor. The value is an integer that indicates the required amount for a particular extended resource.See note.\n", + "type": "object", + "additionalProperties": { + "type": "integer" + } + }, + "cpuResourceLimit": { + "description": "Number of CPU resources the container can maximally use in milli-CPU. See note. \n", + "type": "integer" + }, + "memoryResourceLimit": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "ephemeralStorageResourceLimit": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "hugePageResources": { + "description": "Map of the total size values required for all the hugepages of the size indicated in the key. The key is a string and corresponds to one of the values of the hugepage sizes indicated in the huge_pages_resources property in the VNFD for this container descriptor. The value is a number that indicates the required total size expressed in the same units as in the huge_pages_resources_property in the VNFD that indicates the valid values for required total size for the particular hugepage size. See note.\n", + "type": "object", + "additionalProperties": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + } + }, + "virtualComputeDescData": { + "description": "This type represents selected values for capacity related VDU attributes of the virtual compute resource of a VM.\n* NOTE: At least one of the attributes shall be present.\n", + "type": "object", + "required": [ + "resourceTemplateId" + ], + "oneOf": [ + { + "required": [ + "resourceTemplateId" + ] + }, + { + "required": [ + "numVirtualCpu" + ] + }, + { + "required": [ + "virtualMemSize" + ] + }, + { + "required": [ + "sizeOfVirtualDisk" + ] + }, + { + "required": [ + "hugePagesRequirements" + ] + } + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "numVirtualCpu": { + "description": "Number of virtual CPUs. See note.\n", + "type": "integer" + }, + "virtualMemSize": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "sizeOfVirtualDisk": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "hugePagesRequirements": { + "description": "Map of the total size values required for all the hugepages of the size indicated in the key. The key is a string and corresponds to one of the values of the hugepage sizes indicated in the huge_pages_requirements property in the VNFD for this virtual compute descriptor. The value is a number that indicates the required total size expressed in the same units as in the huge_pages_requirements property in the VNFD that indicates the valid values for required total size for the particular hugepage size. See note.\n", + "type": "object", + "additionalProperties": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + }, + "virtualStorageDescData": { + "description": "Indicates the value for the storage size related attribute in an VirtualStorageDesc. It shall be present when the attribute 'type' indicates STORAGE and absent otherwise.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes of the virtual storage resource. \n", + "type": "object", + "required": [ + "resourceTemplateId", + "sizeOfStorage" + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "sizeOfStorage": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + } + } + } + }, "extCpInfo": { - "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", + "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk. See note 7.\n", "type": "array", "minItems": 1, "items": { @@ -492,18 +715,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -522,6 +733,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -594,7 +817,7 @@ "format": "IP" }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", "type": "string" } } @@ -645,7 +868,7 @@ "description": "VIP CPs that are part of the VNF instance. Shall be present when that particular VIP CP of the VNFC instance is associated to an external CP of the VNF instance.\nMay be present otherwise.\n", "type": "array", "items": { - "description": "This type provides information related to virtual IP CP.\nNOTE 1:\tIt is possible that there is no associated VnfcCp because the virtual IP CP is available but not associated yet. NOTE 2: If only the value or the presence of this attribute is changed in the \"VipCpInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVipCp\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "description": "This type provides information related to virtual IP CP.\nNOTE 1:\tIt is possible that there is no associated VnfcCp because the VIP CP is available but not associated yet. NOTE 2: If only the value or the presence of this attribute is changed in the \"VipCpInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVipCp\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", "type": "object", "required": [ "cpInstanceId", @@ -701,18 +924,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -731,6 +942,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -803,7 +1026,7 @@ "format": "IP" }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", "type": "string" } } @@ -812,7 +1035,7 @@ } }, "associatedVnfcCpIds": { - "description": "Identifiers of the VnfcCps that share the virtual IP addresse allocated to the virtual IP CP instance. See note.\n", + "description": "Identifiers of the VnfcCps that share the virtual IP address allocated to the VIP CP instance. See note.\n", "type": "array", "items": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -834,7 +1057,7 @@ "description": "Virtual CPs that are part of the VNF instance. Shall be present when a particular virtual CP is associated to an external CP of the VNF instance. May be present otherwise.\n", "type": "array", "items": { - "description": "This type provides information related to a virtual CP instance of a VNF.\nNOTE: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\n", + "description": "This type provides information related to a virtual CP instance of a VNF.\n* NOTE 1: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\n* NOTE 2: The information can be omitted because it is already available as part of the external CP information in the\n VnfExtCpInfo structure.\n", "type": "object", "required": [ "cpInstanceId", @@ -903,7 +1126,7 @@ "type": "string" }, "cpProtocolInfo": { - "description": "Protocol information for this CP. There shall be one cpProtocolInfo for each layer protocol supported.\n", + "description": "Protocol information for this CP. There shall be one cpProtocolInfo for each layer protocol supported. This attribute may be omitted if the virtual CP is exposed as an external CP. See note 2.\n", "type": "array", "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", @@ -935,18 +1158,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -965,6 +1176,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -1037,7 +1260,7 @@ "format": "IP" }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", "type": "string" } } @@ -1259,7 +1482,7 @@ "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", "type": "array", "items": { - "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n", + "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n* NOTE 5: Subports need not be used for containerized VNFCs. The application container can send and receive IP\n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster\n network has been configured appropriately. Thus, no individual cpConfig, except the one representing the\n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 6: In the case that the cloud native template included in the MCIOP describes the set of VNFC instances, for\n containerized VNFCs individual connection points need not be configured for each VNFC instance. It is only\n required to configure one \"cpConfig\" per \"cpdId\", not per VNFC instance. The case of using, for a scalable\n VDU, a cloud native template in the MCIOP that describes one single VNFC instance is not specified in the\n present document version.\n", "type": "object", "required": [ "cpdId" @@ -1270,10 +1493,10 @@ "type": "string" }, "cpConfig": { - "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3 and 4.\n", + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5 and 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the\n \"resourceHandle\" attribute in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -1302,7 +1525,7 @@ "type": "string" }, "createExtLinkPort": { - "description": "Indicates to the VNFM the need to create a dedicated link port for the external CP. If set to True, the VNFM shall create a link port. If set to False, the VNFM shall not create a link port. This attribute is only applicable for external CP instances without a floating IP address that expose a virtual IP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", + "description": "Indicates to the VNFM the need to create a dedicated link port for the external CP. If set to True, the VNFM shall create a link port. If set to False, the VNFM shall not create a link port. This attribute is only applicable for external CP instances without a floating IP address that expose a VIP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", "type": "boolean" }, "cpProtocolData": { @@ -1324,7 +1547,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents network address data for IP over Ethernet to assign to the external CP. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI's transport technology.\n", + "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -1338,23 +1561,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "fixedAddresses" - ] - }, - { - "required": [ - "numDynamicAddresses" - ] - }, - { - "required": [ - "ipAddressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -1381,6 +1587,23 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -1433,7 +1656,7 @@ } }, "virtualCpAddress": { - "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for Kubernetes® that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp and the addressPoolName attributes shall not be present at the same time.\n", + "description": "This type represents network address data for a virtual CP.\n* NOTE 1: The loadBalancerIp and the loadBalancerSourceRanges attributes are only used if the \n CIS cluster is set up to be able to configure an external load balancer. Otherwise, it shall be ignored.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP \n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for \n Kubernetes┬« that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp, addressPoolName and the externalIp attributes shall not be present at the same time.\n", "type": "object", "required": [ "type" @@ -1452,9 +1675,34 @@ "type": "string", "format": "IP" }, + "externalIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which the CIS cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", "type": "string" + }, + "loadBalancerSourceRanges": { + "description": "List of client IP address ranges allowed to access an external load balancer. See note 1.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } } } } @@ -1833,526 +2081,538 @@ "type": "string" }, "vnfcResourceInfo": { - "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure \n of information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n - For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n - For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\n\n* NOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that\n exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly\n to an external VL.\n* NOTE 3:\tThe information can be omitted because it is already available as part of the external CP information. * NOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\" structure by \n an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVnfc\"\n structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to \n this LCM operation occurrence.\n* NOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment \n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build \n a link redundant mated pair in SR-IOV cases.\n* NOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", - "type": "object", - "required": [ - "id", - "vduId", - "computeResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vduId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "computeResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "storageResourceIds": { - "description": "References to the VirtualStorage resources or references to Storage MCIO(s). The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure \n of information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n - For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n - For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\n\n* NOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that\n exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly\n to an external VL.\n* NOTE 3:\tThe information can be omitted because it is already available as part of the external CP information. * NOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\" structure by \n an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVnfc\"\n structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to \n this LCM operation occurrence.\n* NOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment \n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build \n a link redundant mated pair in SR-IOV cases.\n* NOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace. * NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP\n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster\n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing the\n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n", + "type": "object", + "required": [ + "id", + "vduId", + "computeResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfcCpInfo": { - "description": "All the CPs of the VNFC instance.\n", - "type": "array", - "items": { - "type": "object", + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "computeResource": { "required": [ - "id", - "cpdId" + "resourceId" ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "vnfExtCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", "type": "string" }, - "cpProtocolInfo": { - "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information. See note 3.\n", - "type": "array", - "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", - "type": "object", - "required": [ - "layerProtocol" - ], - "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET", - "IP_FOR_VIRTUAL_CP" - ] - }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", - "type": "object", - "anyOf": [ - { - "required": [ - "macAddress" - ] - }, - { - "required": [ - "ipAddresses" - ] - } - ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "segmentationId": { - "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", - "type": "string" - }, - "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", - "type": "array", - "items": { - "type": "object", + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "storageResourceIds": { + "description": "References to the VirtualStorage resources or references to Storage MCIO(s). The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfcCpInfo": { + "description": "All the CPs of the VNFC instance. See note 7.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "cpdId" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfExtCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information. See note 3.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", + "type": "object", + "anyOf": [ + { "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] } - }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" - }, - "addressRange": { - "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "array", + "items": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", "type": "string", "format": "IP" } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" } - }, - "subnetId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" } } } } + }, + "virtualCpAddress": { + "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "type": "string" + } + } } + } + } + }, + "vnfLinkPortId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "parentCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "netAttDefResourceId": { + "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "vnfVirtualLinkResourceInfo": { + "description": "Information about the virtualised network resources used by the VLs of the VNF instance. See note 6. Even though externally-managed internal VLs are also used for VNF-internal connectivity, they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance. NOTE: If only the value or the presence of this attribute is changed in the \"VnfVirtualLinkResourceInfo\" \n structure by an LCM operation occurrence, this does not represent a change that requires including a \n related \"AffectedVirtualLink\" structure in the VNF LCM operation occurrence notifications or the \n \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource", + "vnfLinkPorts" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfLinkPorts": { + "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", + "type": "array", + "items": { + "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" }, - "virtualCpAddress": { - "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", "type": "object", - "required": [ - "type" - ], "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "loadBalancerIp": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" }, - "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" } } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" } } - } - }, - "vnfLinkPortId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "parentCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "certificateContentId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "certificateContentId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - } - }, - "vnfVirtualLinkResourceInfo": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance. NOTE: If only the value or the presence of this attribute is changed in the \"VnfVirtualLinkResourceInfo\" \n structure by an LCM operation occurrence, this does not represent a change that requires including a \n related \"AffectedVirtualLink\" structure in the VNF LCM operation occurrence notifications or the \n \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", - "type": "object", - "required": [ - "id", - "vnfVirtualLinkDescId", - "networkResource", - "vnfLinkPorts" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfVirtualLinkDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "networkResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + }, + "vipCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + "trunkResourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" } } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfLinkPorts": { - "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", - "type": "array", - "items": { - "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", - "type": "object", + } + } + }, + "virtualStorageResourceInfo": { + "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\nNOTE: If only the value or the presence of this attribute is changed in the \"VirtualStorageResourceInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVirtualStorage\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "type": "object", + "required": [ + "id", + "virtualStorageDescId", + "storageResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "virtualStorageDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "storageResource": { "required": [ - "id", - "resourceHandle" + "resourceId" ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "resourceHandle": { - "required": [ - "resourceId" - ], + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", "type": "string" }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", "type": "string" }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } } }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpInstanceType": { - "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", - "type": "string", - "enum": [ - "VNFC_CP", - "EXT_CP" - ] - }, - "vipCpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "trunkResourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", "type": "string" } } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "virtualStorageResourceInfo": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\nNOTE: If only the value or the presence of this attribute is changed in the \"VirtualStorageResourceInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVirtualStorage\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", - "type": "object", - "required": [ - "id", - "virtualStorageDescId", - "storageResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "virtualStorageDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "storageResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" } } }, @@ -2392,10 +2652,10 @@ } }, "mcioInfo": { - "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", + "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", "type": "array", "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", "type": "object", "required": [ "mcioId", diff --git a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json index ad0c5a88..f37aa985 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json @@ -1,7 +1,7 @@ { "type": "array", "items": { - "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tThese attributes are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n* NOTE 7:\tSubports need not be used for containerized VNFCs. The application container can send and receive IP\n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster\n network has been configured appropriately. Thus, no individual extCpInfo, except the one representing the\n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 8:\tFor a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the \"scaleStatus\" indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the VNF \n LCM operation explicitly indicates the scale level for the aspect.\n", + "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tThese attributes are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n* NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual extCpInfo, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the ΓÇ£scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the VNF \n LCM operation explicitly indicates the scale level for the aspect.\n", "type": "object", "required": [ "id", @@ -370,12 +370,12 @@ "type": "string" }, "vnfdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "scaleToLevel": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" } } } @@ -396,12 +396,12 @@ "type": "string" }, "vnfdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "scaleToLevel": { "description": "An identifier with the intention of being globally unique.\n", "type": "string" + }, + "scaleLevel": { + "description": "Indicates the scale level. The minimum value shall be 0 and the maximum value shall be <= maxScaleLevel as described in the VNFD.\n", + "type": "integer" } } } @@ -414,8 +414,231 @@ "type": "string" } }, + "resourceCapacityDefinition": { + "description": "Shows current values of VDU attributes related to resource capacity, if different to the default values from the VNFD, as indicated in the (one or more) request(s) of all completed VNF LCM operation(s) that contain this attribute. If an attribute value has been modified multiple times, only the last value is shown. The values indicated in this attribute are applicable to all VNFC instances based on the VDU to which the resourceCapacityDefinition is related.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes.\n* NOTE: Resource definitions not related to a VDU are not considered in this version of the present document.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "tag": { + "description": "Tag assigned by the issuer of a VNF LCM operation request that contains this data type with values to be applied to a VDU. It is used for tracking purposes. The tag is preserved in the run time record as long as at least one value of the capacity related attributes associated with that tag is still valid, i.e., it has not been modified by a later VNF LCM operation request. At most one tag can be included when the data type is used in a VNF LCM operation request. When the data type is used in the VnfInstance data type it may contain multiple tags, namely those provided in VNF LCM requests, if at least one of the values provided in that request associated to that tag is still applicable in the VNFCs created from this VDU, i.e., it has not been modified by a later request.", + "type": "array", + "items": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + } + }, + "type": { + "description": "Type of the resource definition referenced. VALUES ΓÇó\tCOMPUTE ΓÇó\tSTORAGE ΓÇó\tOSCONTAINER", + "type": "string", + "enum": [ + "COMPUTE", + "STORAGE", + "OSCONTAINER" + ] + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "osContainerDescData": { + "description": "Indicates values for resource capacity related attributes in an OsContainerDesc. It shall be present when the attribute ΓÇÿtypeΓÇÖ indicates OSCONTAINER and absent otherwise.", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes of an OsContainer resource.\n* NOTE: At least one of the attributes shall be present.\n", + "type": "object", + "required": [ + "resourceTemplateId" + ], + "oneOf": [ + { + "required": [ + "resourceTemplateId" + ] + }, + { + "required": [ + "requestedCpuResources" + ] + }, + { + "required": [ + "requestedMemoryResources" + ] + }, + { + "required": [ + "requestedEphemeralStorageResources" + ] + }, + { + "required": [ + "extendedResourceRequests" + ] + }, + { + "required": [ + "cpuResourceLimit" + ] + }, + { + "required": [ + "memoryResourceLimit" + ] + }, + { + "required": [ + "ephemeralStorageResourceLimit" + ] + }, + { + "required": [ + "hugePageResources" + ] + } + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "requestedCpuResources": { + "description": "Number of CPU resources requested for the container in milli-CPU. See note.\n", + "type": "integer" + }, + "requestedMemoryResources": { + "description": "Amount of memory resources requested for the container expressed in the same units as specified in the requested_memory_resources_valid_values property in VNFD for this container descriptor. See note.\n", + "type": "array", + "items": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + }, + "requestedEphemeralStorageResources": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "extendedResourceRequests": { + "description": "Map of the amount of extended resources of the type indicated in the key. The key is a string that identifies an extended resource indicated in the extended_resource_requests property in the VNFD for this container descriptor. The value is an integer that indicates the required amount for a particular extended resource.See note.\n", + "type": "object", + "additionalProperties": { + "type": "integer" + } + }, + "cpuResourceLimit": { + "description": "Number of CPU resources the container can maximally use in milli-CPU. See note. \n", + "type": "integer" + }, + "memoryResourceLimit": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "ephemeralStorageResourceLimit": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "hugePageResources": { + "description": "Map of the total size values required for all the hugepages of the size indicated in the key. The key is a string and corresponds to one of the values of the hugepage sizes indicated in the huge_pages_resources property in the VNFD for this container descriptor. The value is a number that indicates the required total size expressed in the same units as in the huge_pages_resources_property in the VNFD that indicates the valid values for required total size for the particular hugepage size. See note.\n", + "type": "object", + "additionalProperties": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + } + }, + "virtualComputeDescData": { + "description": "This type represents selected values for capacity related VDU attributes of the virtual compute resource of a VM.\n* NOTE: At least one of the attributes shall be present.\n", + "type": "object", + "required": [ + "resourceTemplateId" + ], + "oneOf": [ + { + "required": [ + "resourceTemplateId" + ] + }, + { + "required": [ + "numVirtualCpu" + ] + }, + { + "required": [ + "virtualMemSize" + ] + }, + { + "required": [ + "sizeOfVirtualDisk" + ] + }, + { + "required": [ + "hugePagesRequirements" + ] + } + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "numVirtualCpu": { + "description": "Number of virtual CPUs. See note.\n", + "type": "integer" + }, + "virtualMemSize": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "sizeOfVirtualDisk": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + }, + "hugePagesRequirements": { + "description": "Map of the total size values required for all the hugepages of the size indicated in the key. The key is a string and corresponds to one of the values of the hugepage sizes indicated in the huge_pages_requirements property in the VNFD for this virtual compute descriptor. The value is a number that indicates the required total size expressed in the same units as in the huge_pages_requirements property in the VNFD that indicates the valid values for required total size for the particular hugepage size. See note.\n", + "type": "object", + "additionalProperties": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + }, + "virtualStorageDescData": { + "description": "Indicates the value for the storage size related attribute in an VirtualStorageDesc. It shall be present when the attribute 'type' indicates STORAGE and absent otherwise.\n", + "type": "array", + "items": { + "description": "This type represents selected values for capacity related VDU attributes of the virtual storage resource. \n", + "type": "object", + "required": [ + "resourceTemplateId", + "sizeOfStorage" + ], + "properties": { + "resourceTemplateId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "sizeOfStorage": { + "description": "A number defined in IETF RFC 8259.\n", + "type": "number" + } + } + } + } + } + } + }, "extCpInfo": { - "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n", + "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk. See note 7.\n", "type": "array", "minItems": 1, "items": { @@ -494,18 +717,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -524,6 +735,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -596,7 +819,7 @@ "format": "IP" }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", "type": "string" } } @@ -647,7 +870,7 @@ "description": "VIP CPs that are part of the VNF instance. Shall be present when that particular VIP CP of the VNFC instance is associated to an external CP of the VNF instance.\nMay be present otherwise.\n", "type": "array", "items": { - "description": "This type provides information related to virtual IP CP.\nNOTE 1:\tIt is possible that there is no associated VnfcCp because the virtual IP CP is available but not associated yet. NOTE 2: If only the value or the presence of this attribute is changed in the \"VipCpInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVipCp\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "description": "This type provides information related to virtual IP CP.\nNOTE 1:\tIt is possible that there is no associated VnfcCp because the VIP CP is available but not associated yet. NOTE 2: If only the value or the presence of this attribute is changed in the \"VipCpInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVipCp\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", "type": "object", "required": [ "cpInstanceId", @@ -703,18 +926,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -733,6 +944,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -805,7 +1028,7 @@ "format": "IP" }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", "type": "string" } } @@ -814,7 +1037,7 @@ } }, "associatedVnfcCpIds": { - "description": "Identifiers of the VnfcCps that share the virtual IP addresse allocated to the virtual IP CP instance. See note.\n", + "description": "Identifiers of the VnfcCps that share the virtual IP address allocated to the VIP CP instance. See note.\n", "type": "array", "items": { "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", @@ -836,7 +1059,7 @@ "description": "Virtual CPs that are part of the VNF instance. Shall be present when a particular virtual CP is associated to an external CP of the VNF instance. May be present otherwise.\n", "type": "array", "items": { - "description": "This type provides information related to a virtual CP instance of a VNF.\nNOTE: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\n", + "description": "This type provides information related to a virtual CP instance of a VNF.\n* NOTE 1: A consumer of the VNF LCM interface can learn the actual VNFC instances implementing the service \n accessible via the virtual CP instance by querying the \"vnfcResourceInfo\" from the \"InstantiatedVnfInfo\" \n and filtering by corresponding \"vduIds\" values.\n* NOTE 2: The information can be omitted because it is already available as part of the external CP information in the\n VnfExtCpInfo structure.\n", "type": "object", "required": [ "cpInstanceId", @@ -905,7 +1128,7 @@ "type": "string" }, "cpProtocolInfo": { - "description": "Protocol information for this CP. There shall be one cpProtocolInfo for each layer protocol supported.\n", + "description": "Protocol information for this CP. There shall be one cpProtocolInfo for each layer protocol supported. This attribute may be omitted if the virtual CP is exposed as an external CP. See note 2.\n", "type": "array", "items": { "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", @@ -937,18 +1160,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -967,6 +1178,18 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -1039,7 +1262,7 @@ "format": "IP" }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", "type": "string" } } @@ -1261,7 +1484,7 @@ "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", "type": "array", "items": { - "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n", + "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n* NOTE 5: Subports need not be used for containerized VNFCs. The application container can send and receive IP\n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster\n network has been configured appropriately. Thus, no individual cpConfig, except the one representing the\n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 6: In the case that the cloud native template included in the MCIOP describes the set of VNFC instances, for\n containerized VNFCs individual connection points need not be configured for each VNFC instance. It is only\n required to configure one \"cpConfig\" per \"cpdId\", not per VNFC instance. The case of using, for a scalable\n VDU, a cloud native template in the MCIOP that describes one single VNFC instance is not specified in the\n present document version.\n", "type": "object", "required": [ "cpdId" @@ -1272,10 +1495,10 @@ "type": "string" }, "cpConfig": { - "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3 and 4.\n", + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5 and 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the\n \"resourceHandle\" attribute in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -1304,7 +1527,7 @@ "type": "string" }, "createExtLinkPort": { - "description": "Indicates to the VNFM the need to create a dedicated link port for the external CP. If set to True, the VNFM shall create a link port. If set to False, the VNFM shall not create a link port. This attribute is only applicable for external CP instances without a floating IP address that expose a virtual IP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", + "description": "Indicates to the VNFM the need to create a dedicated link port for the external CP. If set to True, the VNFM shall create a link port. If set to False, the VNFM shall not create a link port. This attribute is only applicable for external CP instances without a floating IP address that expose a VIP CP instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise.\n", "type": "boolean" }, "cpProtocolData": { @@ -1326,7 +1549,7 @@ ] }, "ipOverEthernet": { - "description": "This type represents network address data for IP over Ethernet to assign to the external CP. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI's transport technology.\n", + "description": "This type represents network address data for IP over Ethernet. * NOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. * NOTE 2:\tExactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present. * NOTE 3:\tIf the CP instance represents a subport in a trunk, segmentationId shall be present.\n Otherwise it shall not be present.\n* NOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the actual\n network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header\n of the packets or it may be an identifier used between the application and the NFVI networking\n infrastructure to identify the network sub-interface of the trunk port in question. In the latter\n case the NFVI infrastructure will map this local segmentationId to whatever segmentationId is\n actually used by the NFVI's transport technology.\n", "type": "object", "anyOf": [ { @@ -1340,23 +1563,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "fixedAddresses" - ] - }, - { - "required": [ - "numDynamicAddresses" - ] - }, - { - "required": [ - "ipAddressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -1383,6 +1589,23 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -1435,7 +1658,7 @@ } }, "virtualCpAddress": { - "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for Kubernetes® that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp and the addressPoolName attributes shall not be present at the same time.\n", + "description": "This type represents network address data for a virtual CP.\n* NOTE 1: The loadBalancerIp and the loadBalancerSourceRanges attributes are only used if the \n CIS cluster is set up to be able to configure an external load balancer. Otherwise, it shall be ignored.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP \n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for \n Kubernetes┬« that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp, addressPoolName and the externalIp attributes shall not be present at the same time.\n", "type": "object", "required": [ "type" @@ -1454,9 +1677,34 @@ "type": "string", "format": "IP" }, + "externalIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which the CIS cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", "type": "string" + }, + "loadBalancerSourceRanges": { + "description": "List of client IP address ranges allowed to access an external load balancer. See note 1.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } } } } @@ -1835,526 +2083,538 @@ "type": "string" }, "vnfcResourceInfo": { - "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure \n of information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n - For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n - For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\n\n* NOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that\n exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly\n to an external VL.\n* NOTE 3:\tThe information can be omitted because it is already available as part of the external CP information. * NOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\" structure by \n an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVnfc\"\n structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to \n this LCM operation occurrence.\n* NOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment \n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build \n a link redundant mated pair in SR-IOV cases.\n* NOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", - "type": "object", - "required": [ - "id", - "vduId", - "computeResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vduId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "computeResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "storageResourceIds": { - "description": "References to the VirtualStorage resources or references to Storage MCIO(s). The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", - "type": "array", - "items": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "description": "Information about the virtualised compute and storage resources used by the VNFCs of the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. Depending on the form of virtualisation container of the VNFC:\n - For a VNFC based on VM, a reference to the corresponding VirtualCompute shall be provided, and\n - For a VNFC based on OS container(s), a reference to the Compute MCIO shall be provided. Hence, exposure \n of information by the VNFM to the NFVO is at the MCIO level.\nIn addition, the references to the storage resources depend on the form of the VNFC:\n - For a VNFC based on VM, storage resource identifiers shall refer to VirtualStorage resources, and\n - For a VNFC based on OS container(s), storage resource identifiers shall refer to Storage MCIOs.\n\n\n* NOTE 1:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 2:\tA VNFC CP is \"connected to\" an external CP if the VNFC CP is connected to an internal VL that\n exposes an external CP. A VNFC CP is \"exposed as\" an external CP if it is connected directly\n to an external VL.\n* NOTE 3:\tThe information can be omitted because it is already available as part of the external CP information. * NOTE 4: If only the value or the presence of this attribute is changed in the \"VnfcResourceInfo\" structure by \n an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVnfc\"\n structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to \n this LCM operation occurrence.\n* NOTE 5: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment \n definition resource is needed to fulfil the connectivity requirements of the internal CP, e.g. to build \n a link redundant mated pair in SR-IOV cases.\n* NOTE 6: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace. * NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP\n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster\n network has been configured appropriately. Thus, no individual vnfcCpInfo, except the one representing the\n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n", + "type": "object", + "required": [ + "id", + "vduId", + "computeResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfcCpInfo": { - "description": "All the CPs of the VNFC instance.\n", - "type": "array", - "items": { - "type": "object", + }, + "vduId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "computeResource": { "required": [ - "id", - "cpdId" + "resourceId" ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "cpdId": { - "description": "An identifier that is unique within a VNF descriptor.\n", + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "vnfExtCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", "type": "string" }, - "cpProtocolInfo": { - "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information. See note 3.\n", - "type": "array", - "items": { - "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", - "type": "object", - "required": [ - "layerProtocol" - ], - "properties": { - "layerProtocol": { - "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", - "type": "string", - "enum": [ - "IP_OVER_ETHERNET", - "IP_FOR_VIRTUAL_CP" - ] - }, - "ipOverEthernet": { - "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", - "type": "object", - "anyOf": [ - { - "required": [ - "macAddress" - ] - }, - { - "required": [ - "ipAddresses" - ] - } - ], - "oneOf": [ - { - "required": [ - "addresses" - ] - }, - { - "required": [ - "addressRange" - ] - } - ], - "properties": { - "macAddress": { - "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", - "type": "string", - "format": "MAC" - }, - "segmentationId": { - "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", - "type": "string" - }, - "ipAddresses": { - "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", - "type": "array", - "items": { - "type": "object", + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "storageResourceIds": { + "description": "References to the VirtualStorage resources or references to Storage MCIO(s). The value refers to a VirtualStorageResourceInfo item in the VnfInstance.\n", + "type": "array", + "items": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfcCpInfo": { + "description": "All the CPs of the VNFC instance. See note 7.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "cpdId" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpdId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfExtCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "cpProtocolInfo": { + "description": "Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. The information can be omitted because it is already available as part of the external CP information. See note 3.\n", + "type": "array", + "items": { + "description": "This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses.\nNOTE:\tThis attribute allows to signal the addition of further types of layer and protocol in future versions of the \n present document in a backwards-compatible way. In the current version of the present document, only IP over \n Ethernet is supported.\n", + "type": "object", + "required": [ + "layerProtocol" + ], + "properties": { + "layerProtocol": { + "description": "The identifier of layer(s) and protocol(s) associated to the network address information.\nPermitted values:\n - IP_OVER_ETHERNET\n - IP_FOR_VIRTUAL_CP\nSee note.\n", + "type": "string", + "enum": [ + "IP_OVER_ETHERNET", + "IP_FOR_VIRTUAL_CP" + ] + }, + "ipOverEthernet": { + "description": "This type represents information about a network address that has been assigned.\nNOTE 1:\tAt least one of \"macAddress\" or \"ipAddresses\" shall be present. NOTE 2:\tExactly one of \"addresses\" or \"addressRange\" shall be present. NOTE 3:\tIf the Cp instance represents a subport in a trunk, segmentationId shall be present. \n Otherwise it shall not be present.\nNOTE 4:\tDepending on the NFVI networking infrastructure, the segmentationId may indicate the \n actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the \n transport header of the packets or it may be an identifier used between the application \n and the NFVI networking infrastructure to identify the network sub-interface of the trunk \n port in question. In the latter case the NFVI infrastructure will map this local segmentationId \n to whatever segmentationId is actually used by the NFVIΓÇÖs transport technology.\n", + "type": "object", + "anyOf": [ + { "required": [ - "type" - ], - "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "addresses": { - "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", - "type": "array", - "items": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "macAddress" + ] + }, + { + "required": [ + "ipAddresses" + ] + } + ], + "properties": { + "macAddress": { + "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", + "type": "string", + "format": "MAC" + }, + "segmentationId": { + "description": "Identification of the network segment to which the Cp instance connects to. See notes 3 and 4.\n", + "type": "string" + }, + "ipAddresses": { + "description": "Addresses assigned to the CP instance. Each entry represents IP addresses assigned by fixed or dynamic IP address assignment per subnet. See note 1.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "oneOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "addressRange" + ] } - }, - "isDynamic": { - "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", - "type": "boolean" - }, - "addressRange": { - "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", - "type": "object", - "required": [ - "minAddress", - "maxAddress" - ], - "properties": { - "minAddress": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" - }, - "maxAddress": { + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "addresses": { + "description": "Fixed addresses assigned (from the subnet defined by \"subnetId\" if provided). See note 2.\n", + "type": "array", + "items": { "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", "type": "string", "format": "IP" } + }, + "isDynamic": { + "description": "Indicates whether this set of addresses was assigned dynamically (true) or based on address information provided as input from the API consumer (false). Shall be present if \"addresses\" is present and shall be absent otherwise.\n", + "type": "boolean" + }, + "addressRange": { + "description": "An IP address range used, e.g. in case of egress connections. See note 2.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } + }, + "subnetId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" } - }, - "subnetId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" } } } } + }, + "virtualCpAddress": { + "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", + "type": "string", + "enum": [ + "IPV4", + "IPV6" + ] + }, + "loadBalancerIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "addressPoolName": { + "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "type": "string" + } + } } + } + } + }, + "vnfLinkPortId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "parentCpId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "netAttDefResourceId": { + "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "type": "array", + "items": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + } + } + } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "certificateContentId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + } + } + } + }, + "vnfVirtualLinkResourceInfo": { + "description": "Information about the virtualised network resources used by the VLs of the VNF instance. See note 6. Even though externally-managed internal VLs are also used for VNF-internal connectivity, they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance. NOTE: If only the value or the presence of this attribute is changed in the \"VnfVirtualLinkResourceInfo\" \n structure by an LCM operation occurrence, this does not represent a change that requires including a \n related \"AffectedVirtualLink\" structure in the VNF LCM operation occurrence notifications or the \n \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "type": "object", + "required": [ + "id", + "vnfVirtualLinkDescId", + "networkResource", + "vnfLinkPorts" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "vnfVirtualLinkDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "networkResource": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", + "type": "object", + "properties": { + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + } + } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" + } + } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "vnfLinkPorts": { + "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", + "type": "array", + "items": { + "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", + "type": "object", + "required": [ + "id", + "resourceHandle" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "resourceHandle": { + "required": [ + "resourceId" + ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "properties": { + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" }, - "virtualCpAddress": { - "description": "This type represents information about a network address that has been assigned to a virtual CP.\n", + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", "type": "object", - "required": [ - "type" - ], "properties": { - "type": { - "description": "The type of the IP addresses. Permitted values: - IPV4 - IPV6\n", - "type": "string", - "enum": [ - "IPV4", - "IPV6" - ] - }, - "loadBalancerIp": { - "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", - "type": "string", - "format": "IP" + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "type": "string" }, - "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", "type": "string" + }, + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" } } + }, + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", + "type": "string" } } - } - }, - "vnfLinkPortId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "parentCpId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", - "type": "array", - "items": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "certificateContentId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - } - } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "certificateContentId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - } - } - }, - "vnfVirtualLinkResourceInfo": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by an internal VL instance in a VNF instance. NOTE: If only the value or the presence of this attribute is changed in the \"VnfVirtualLinkResourceInfo\" \n structure by an LCM operation occurrence, this does not represent a change that requires including a \n related \"AffectedVirtualLink\" structure in the VNF LCM operation occurrence notifications or the \n \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", - "type": "object", - "required": [ - "id", - "vnfVirtualLinkDescId", - "networkResource", - "vnfLinkPorts" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "vnfVirtualLinkDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "networkResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", + }, + "cpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", + "cpInstanceType": { + "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", + "type": "string", + "enum": [ + "VNFC_CP", + "EXT_CP" + ] + }, + "vipCpInstanceId": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", "type": "string" }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" + "trunkResourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" } } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" } + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vnfLinkPorts": { - "description": "Links ports of this VL. Shall be present when the linkPort is used for external connectivity by the VNF (refer to VnfLinkPortInfo). May be present otherwise.\n", - "type": "array", - "items": { - "description": "This type represents a link port of an internal VL of a VNF.\nNOTE 1: Either cpInstanceId with cpInstanceType set to \"EXT_CP\" or any combination of cpInstanceId\n with cpInstanceType set to \"VNFC_CP\" and vipCpInstanceId (i.e. one or both of them) shall be \n present for a VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to \"VNFC_CP\" \n and vipCpInstanceId are present, the two different CP instances share the linkport.\nNOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId\n and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or \n only vipCpInstanceId is present (UC6 and UC#6-b).\nNOTE 3: The value of \"trunkResourceId\" is scoped by the value of \"vimConnectionId\" in the \"resourceHandle\"\n attribute.\n", - "type": "object", + } + } + }, + "virtualStorageResourceInfo": { + "description": "Information on the virtualised storage resource(s) used as storage for the VNF instance.\n", + "type": "array", + "items": { + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\nNOTE: If only the value or the presence of this attribute is changed in the \"VirtualStorageResourceInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVirtualStorage\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", + "type": "object", + "required": [ + "id", + "virtualStorageDescId", + "storageResource" + ], + "properties": { + "id": { + "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "type": "string" + }, + "virtualStorageDescId": { + "description": "An identifier that is unique within a VNF descriptor.\n", + "type": "string" + }, + "vnfdId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "storageResource": { "required": [ - "id", - "resourceHandle" + "resourceId" ], + "type": "object", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", + "vimConnectionId": { + "description": "An identifier with the intention of being globally unique.\n", "type": "string" }, - "resourceHandle": { - "required": [ - "resourceId" - ], + "resourceProviderId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "resourceId": { + "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "type": "string" + }, + "vimLevelResourceType": { + "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "type": "string" + }, + "vimLevelAdditionalResourceInfo": { + "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "hostName": { + "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", "type": "string" }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", + "persistentVolume": { + "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", "type": "string" }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" + "additionalInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } } }, - "cpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "cpInstanceType": { - "description": "Type of the CP instance that is identified by cpInstanceId. Shall be present if \"cpInstanceId\" is present and shall be absent otherwise.\nPermitted values: - VNFC_CP: The link port is connected to a VNFC CP. -\tEXT_CP: The link port is associated to an external CP. See note 1.\n", - "type": "string", - "enum": [ - "VNFC_CP", - "EXT_CP" - ] - }, - "vipCpInstanceId": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "trunkResourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", + "containerNamespace": { + "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", "type": "string" } } + }, + "reservationId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "metadata": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" } - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - }, - "virtualStorageResourceInfo": { - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance.\nNOTE: If only the value or the presence of this attribute is changed in the \"VirtualStorageResourceInfo\" structure by an LCM operation occurrence, this does not represent a change that requires including a related \"AffectedVirtualStorage\" structure in the VNF LCM operation occurrence notifications or the \"VnfLcmOpOcc\" structure related to this LCM operation occurrence.\n", - "type": "object", - "required": [ - "id", - "virtualStorageDescId", - "storageResource" - ], - "properties": { - "id": { - "description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n", - "type": "string" - }, - "virtualStorageDescId": { - "description": "An identifier that is unique within a VNF descriptor.\n", - "type": "string" - }, - "vnfdId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "storageResource": { - "required": [ - "resourceId" - ], - "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", - "properties": { - "vimConnectionId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceProviderId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "resourceId": { - "description": "An identifier maintained by the VIM or the CISM or other resource provider. It is expected to be unique within the VIM instance.\n", - "type": "string" - }, - "vimLevelResourceType": { - "description": "Type of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n", - "type": "string" - }, - "vimLevelAdditionalResourceInfo": { - "description": "This type represents additional resource information which resource and resource type specific, and which is available from the VIM or the CISM or the resource provider.\n* NOTE: At least one attribute shall be present.\n", - "type": "object", - "properties": { - "hostName": { - "description": "Name of the host where the resource is allocated. It shall be present for compute resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "persistentVolume": { - "description": "Name of the persistent volume to which the persistent volume claim representing the storage resource is bound. It may be present for storage resources in the scope of the CISM and shall be absent otherwise. See note.\n", - "type": "string" - }, - "additionalInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs 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" - } - } - }, - "containerNamespace": { - "description": "The value of the namespace in which the MCIO corresponding to the resource is deployed. This attribute shall be present if the resource is managed by a CISM and it shall be absent otherwise.\n", - "type": "string" - } - } - }, - "reservationId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "metadata": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" } } }, @@ -2394,10 +2654,10 @@ } }, "mcioInfo": { - "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", + "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", "type": "array", "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state as specified in the respective declarative descriptor. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", "type": "object", "required": [ "mcioId", diff --git a/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOcc.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOcc.schema.json index 6601f1e5..2ca32506 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOcc.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOcc.schema.json @@ -1,5 +1,5 @@ { - "description": "This type represents a VNF lifecycle management operation occurrence. Shall be set to the value of the \"id\" attribute in the \"Grant\" representing the associated \"Individual Grant\", if such grant exists. * NOTE 1:\tThis allows the API consumer to obtain the information contained in the latest \"result\"\n notification if it has not received it due to an error or a wrongly configured subscription filter.\n* NOTE 2:\tNot more than one of changedInfo and modificationsTriggeredByVnfPkgChange shall be present. * NOTE 3:\tFor a particular affected VL, there shall be as many \"AffectedVirtualLink\" entries as needed\n for signalling the different types of changes, i.e. one per virtual link and change type.\n For instance, in the case of signalling affected VL instances involving the addition of a\n particular VL instance with links ports, one \"AffectedVirtualLink\" entry signals the addition\n of the VL by using the \"changeType\" attribute of \"AffectedVirtualLink\" structure equal to \"ADDED\",\n and another \"AffectedVirtualLink\" entry signals the addition of VNF link ports of the VL by using the\n \"changeType\" equal to \"LINK_PORT_ADDED\".\n* NOTE 4:\tA coordination action has timed out if the VNFM has not been able to read the\n \"Individual coordination action\" resource within a timeout interval after requesting the coordination\n to be started or to be cancelled. The length of the timeout interval is defined by means outside\n the scope of the present document.\n* NOTE 5: The list of rejected coordinations may be garbage collected if the LCM operation occurrence has\n reached a terminal state, i.e. one of \"COMPLETED\", \"FAILED\" and \"ROLLED_BACK\".\n", + "description": "This type represents a VNF lifecycle management operation occurrence. Shall be set to the value of the \"id\" attribute in the \"Grant\" representing the associated \"Individual Grant\", if such grant exists. * NOTE 1:\tThis allows the API consumer to obtain the information contained in the latest \"result\"\n notification if it has not received it due to an error or a wrongly configured subscription filter.\n* NOTE 2:\tNot more than one of changedInfo and modificationsTriggeredByVnfPkgChange shall be present. * NOTE 3:\tFor a particular affected VL, there shall be as many \"AffectedVirtualLink\" entries as needed\n for signalling the different types of changes, i.e. one per virtual link and change type.\n For instance, in the case of signaling affected VL instances involving the addition of a\n particular VL instance with links ports, one \"AffectedVirtualLink\" entry signals the addition\n of the VL by using the \"changeType\" attribute of \"AffectedVirtualLink\" structure equal to \"ADDED\",\n and another \"AffectedVirtualLink\" entry signals the addition of VNF link ports of the VL by using the\n \"changeType\" equal to \"LINK_PORT_ADDED\".\n* NOTE 4:\tA coordination action has timed out if the VNFM has not been able to read the\n \"Individual coordination action\" resource within a timeout interval after requesting the coordination\n to be started or to be cancelled. The length of the timeout interval is defined by means outside\n the scope of the present document.\n* NOTE 5: The list of rejected coordinations may be garbage collected if the LCM operation occurrence has\n reached a terminal state, i.e. one of \"COMPLETED\", \"FAILED\" and \"ROLLED_BACK\".\n", "type": "object", "oneOf": [ { @@ -61,7 +61,7 @@ "type": "string" }, "operation": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation \n", "type": "string", "enum": [ "INSTANTIATE", @@ -75,7 +75,8 @@ "MODIFY_INFO", "CREATE_SNAPSHOT", "REVERT_TO_SNAPSHOT", - "CHANGE_VNFPKG" + "CHANGE_VNFPKG", + "SELECT_DEPL_MODS" ] }, "isAutomaticInvocation": { @@ -83,7 +84,7 @@ "type": "boolean" }, "operationParams": { - "description": "Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. In addition, the provisions in clause 5.7 shall apply. The following mapping between operationType and the data type of this attribute shall apply: * INSTANTIATE: InstantiateVnfRequest * SCALE: ScaleVnfRequest * SCALE_TO_LEVEL: ScaleVnfToLevelRequest * CHANGE_FLAVOUR: ChangeVnfFlavourRequest * OPERATE: OperateVnfRequest * HEAL: HealVnfRequest * CHANGE_EXT_CONN: ChangeExtVnfConnectivityRequest * TERMINATE: TerminateVnfRequest * MODIFY_INFO: VnfInfoModifications * CREATE_SNAPSHOT: CreateVnfSnapshotRequest * REVERT_TO_SNAPSHOT: RevertToVnfSnapshotRequest * CHANGE_VNFPKG: ChangeCurrentVnfPkgRequest\n", + "description": "Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. In addition, the provisions in clause 5.7 shall apply. The following mapping between operationType and the data type of this attribute shall apply: * INSTANTIATE: InstantiateVnfRequest * SCALE: ScaleVnfRequest * SCALE_TO_LEVEL: ScaleVnfToLevelRequest * CHANGE_FLAVOUR: ChangeVnfFlavourRequest * OPERATE: OperateVnfRequest * HEAL: HealVnfRequest * CHANGE_EXT_CONN: ChangeExtVnfConnectivityRequest * TERMINATE: TerminateVnfRequest * MODIFY_INFO: VnfInfoModificationRequest * CREATE_SNAPSHOT: CreateVnfSnapshotRequest * REVERT_TO_SNAPSHOT: RevertToVnfSnapshotRequest * CHANGE_VNFPKG: ChangeCurrentVnfPkgRequest * SELECT_DEPL_MODS: SelectVnfDeployableModulesRequest\n", "type": "object" }, "isCancelPending": { @@ -289,7 +290,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource or Network MCIO that is used by a VNF instance. Information about the resource is available from the VIM or the CISM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -466,7 +467,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource or Storage MCIO that is used by a VNF instance. Information about the resource is available from the VIM or the CISM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -765,7 +766,7 @@ "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", "type": "array", "items": { - "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n", + "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n* NOTE 5: Subports need not be used for containerized VNFCs. The application container can send and receive IP\n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster\n network has been configured appropriately. Thus, no individual cpConfig, except the one representing the\n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 6: In the case that the cloud native template included in the MCIOP describes the set of VNFC instances, for\n containerized VNFCs individual connection points need not be configured for each VNFC instance. It is only\n required to configure one \"cpConfig\" per \"cpdId\", not per VNFC instance. The case of using, for a scalable\n VDU, a cloud native template in the MCIOP that describes one single VNFC instance is not specified in the\n present document version.\n", "type": "object", "required": [ "cpdId" @@ -776,10 +777,10 @@ "type": "string" }, "cpConfig": { - "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3 and 4.\n", + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5 and 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the\n \"resourceHandle\" attribute in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -844,23 +845,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "fixedAddresses" - ] - }, - { - "required": [ - "numDynamicAddresses" - ] - }, - { - "required": [ - "ipAddressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -887,6 +871,23 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -939,7 +940,7 @@ } }, "virtualCpAddress": { - "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for Kubernetes® that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp and the addressPoolName attributes shall not be present at the same time.\n", + "description": "This type represents network address data for a virtual CP.\n* NOTE 1: The loadBalancerIp and the loadBalancerSourceRanges attributes are only used if the \n CIS cluster is set up to be able to configure an external load balancer. Otherwise, it shall be ignored.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP \n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for \n Kubernetes┬« that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp, addressPoolName and the externalIp attributes shall not be present at the same time.\n", "type": "object", "required": [ "type" @@ -958,9 +959,34 @@ "type": "string", "format": "IP" }, + "externalIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which the CIS cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", "type": "string" + }, + "loadBalancerSourceRanges": { + "description": "List of client IP address ranges allowed to access an external load balancer. See note 1.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } } } } @@ -1100,39 +1126,6 @@ "vnfdVersion": { "description": "A version.\n", "type": "string" - }, - "vimConnectionInfo": { - "description": "If present, this attribute signals the changes to VIM connection info that were passed in the related \"ChangeCurrentVnfPkgRequest\" structure. The provisions for sensitive information defined in clause 4.4.1.6 apply.\n", - "type": "object", - "additionalProperties": { - "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-relate dparameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM., CISM, CIR or MCIOP repository.\n", - "type": "object", - "required": [ - "vimType" - ], - "properties": { - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", - "type": "string" - }, - "interfaceInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "accessInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "extra": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } } } }, diff --git a/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOccs.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOccs.schema.json index 2cdb3d91..4c35d74e 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOccs.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOccs.schema.json @@ -1,7 +1,7 @@ { "type": "array", "items": { - "description": "This type represents a VNF lifecycle management operation occurrence. Shall be set to the value of the \"id\" attribute in the \"Grant\" representing the associated \"Individual Grant\", if such grant exists. * NOTE 1:\tThis allows the API consumer to obtain the information contained in the latest \"result\"\n notification if it has not received it due to an error or a wrongly configured subscription filter.\n* NOTE 2:\tNot more than one of changedInfo and modificationsTriggeredByVnfPkgChange shall be present. * NOTE 3:\tFor a particular affected VL, there shall be as many \"AffectedVirtualLink\" entries as needed\n for signalling the different types of changes, i.e. one per virtual link and change type.\n For instance, in the case of signalling affected VL instances involving the addition of a\n particular VL instance with links ports, one \"AffectedVirtualLink\" entry signals the addition\n of the VL by using the \"changeType\" attribute of \"AffectedVirtualLink\" structure equal to \"ADDED\",\n and another \"AffectedVirtualLink\" entry signals the addition of VNF link ports of the VL by using the\n \"changeType\" equal to \"LINK_PORT_ADDED\".\n* NOTE 4:\tA coordination action has timed out if the VNFM has not been able to read the\n \"Individual coordination action\" resource within a timeout interval after requesting the coordination\n to be started or to be cancelled. The length of the timeout interval is defined by means outside\n the scope of the present document.\n* NOTE 5: The list of rejected coordinations may be garbage collected if the LCM operation occurrence has\n reached a terminal state, i.e. one of \"COMPLETED\", \"FAILED\" and \"ROLLED_BACK\".\n", + "description": "This type represents a VNF lifecycle management operation occurrence. Shall be set to the value of the \"id\" attribute in the \"Grant\" representing the associated \"Individual Grant\", if such grant exists. * NOTE 1:\tThis allows the API consumer to obtain the information contained in the latest \"result\"\n notification if it has not received it due to an error or a wrongly configured subscription filter.\n* NOTE 2:\tNot more than one of changedInfo and modificationsTriggeredByVnfPkgChange shall be present. * NOTE 3:\tFor a particular affected VL, there shall be as many \"AffectedVirtualLink\" entries as needed\n for signalling the different types of changes, i.e. one per virtual link and change type.\n For instance, in the case of signaling affected VL instances involving the addition of a\n particular VL instance with links ports, one \"AffectedVirtualLink\" entry signals the addition\n of the VL by using the \"changeType\" attribute of \"AffectedVirtualLink\" structure equal to \"ADDED\",\n and another \"AffectedVirtualLink\" entry signals the addition of VNF link ports of the VL by using the\n \"changeType\" equal to \"LINK_PORT_ADDED\".\n* NOTE 4:\tA coordination action has timed out if the VNFM has not been able to read the\n \"Individual coordination action\" resource within a timeout interval after requesting the coordination\n to be started or to be cancelled. The length of the timeout interval is defined by means outside\n the scope of the present document.\n* NOTE 5: The list of rejected coordinations may be garbage collected if the LCM operation occurrence has\n reached a terminal state, i.e. one of \"COMPLETED\", \"FAILED\" and \"ROLLED_BACK\".\n", "type": "object", "oneOf": [ { @@ -63,7 +63,7 @@ "type": "string" }, "operation": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation.\n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation \n", "type": "string", "enum": [ "INSTANTIATE", @@ -77,7 +77,8 @@ "MODIFY_INFO", "CREATE_SNAPSHOT", "REVERT_TO_SNAPSHOT", - "CHANGE_VNFPKG" + "CHANGE_VNFPKG", + "SELECT_DEPL_MODS" ] }, "isAutomaticInvocation": { @@ -85,7 +86,7 @@ "type": "boolean" }, "operationParams": { - "description": "Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. In addition, the provisions in clause 5.7 shall apply. The following mapping between operationType and the data type of this attribute shall apply: * INSTANTIATE: InstantiateVnfRequest * SCALE: ScaleVnfRequest * SCALE_TO_LEVEL: ScaleVnfToLevelRequest * CHANGE_FLAVOUR: ChangeVnfFlavourRequest * OPERATE: OperateVnfRequest * HEAL: HealVnfRequest * CHANGE_EXT_CONN: ChangeExtVnfConnectivityRequest * TERMINATE: TerminateVnfRequest * MODIFY_INFO: VnfInfoModifications * CREATE_SNAPSHOT: CreateVnfSnapshotRequest * REVERT_TO_SNAPSHOT: RevertToVnfSnapshotRequest * CHANGE_VNFPKG: ChangeCurrentVnfPkgRequest\n", + "description": "Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. In addition, the provisions in clause 5.7 shall apply. The following mapping between operationType and the data type of this attribute shall apply: * INSTANTIATE: InstantiateVnfRequest * SCALE: ScaleVnfRequest * SCALE_TO_LEVEL: ScaleVnfToLevelRequest * CHANGE_FLAVOUR: ChangeVnfFlavourRequest * OPERATE: OperateVnfRequest * HEAL: HealVnfRequest * CHANGE_EXT_CONN: ChangeExtVnfConnectivityRequest * TERMINATE: TerminateVnfRequest * MODIFY_INFO: VnfInfoModificationRequest * CREATE_SNAPSHOT: CreateVnfSnapshotRequest * REVERT_TO_SNAPSHOT: RevertToVnfSnapshotRequest * CHANGE_VNFPKG: ChangeCurrentVnfPkgRequest * SELECT_DEPL_MODS: SelectVnfDeployableModulesRequest\n", "type": "object" }, "isCancelPending": { @@ -291,7 +292,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource or Network MCIO that is used by a VNF instance. Information about the resource is available from the VIM or the CISM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -468,7 +469,7 @@ "resourceId" ], "type": "object", - "description": "This type represents the information that allows addressing a virtualised resource or Storage MCIO that is used by a VNF instance. Information about the resource is available from the VIM or the CISM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", + "description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n* NOTE 1: The information about the VIM or CISM connection referenced by the VIM connection id is known to the\n VNFM. Moreover, the identifier of the VIM connection provides scope to the resourceId.\n\n* NOTE 2: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM or CISM or the resource \n provider and can be used as information that complements the ResourceHandle. When the container\n infrastructure service is a Kubernetes┬« instance the vimLevelResourceType is the type of resource, as would \n correspond to the 'kind' field if the resource is declared in its own Kubernetes┬« manifest, e.g.: Pod, \n PersistentVolumeClaim, NetworkAttachmentDefinition.\n\n* NOTE 3: When the container infrastructure service is a Kubernetes┬« instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes┬« assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes┬« manifest, or a compound name built by \n Kubernetes┬« if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value of \n the 'metadata.name' field in Kubernetes┬« manifest.\n", "properties": { "vimConnectionId": { "description": "An identifier with the intention of being globally unique.\n", @@ -767,7 +768,7 @@ "description": "Allows the API consumer to read the current CP configuration information for the connection of external CPs to the external virtual link. See note.\n", "type": "array", "items": { - "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n", + "description": "This type represents configuration information for external CPs created. * NOTE 1: \tIn case this identifier refers to a CPD with trunking enabled, the external CP instances created\n from this CPD will represent ports in a trunk.\n* NOTE 2: \tWithin one VNF instance, all VNFC instances created from a particular VDU have the same external\n connectivity. Thus, given a particular value of the \"cpdId\" attribute, there shall be one\n \"cpConfig\" entry for each VNFC instance that has been or can be created from a VDU which includes\n a CPD identified by the \"cpdId\" attribute. If the cpConfig represents a subport in a trunk,\n all \"cpConfig\" entries in this list shall have the same segmentationId, which means they are\n connected to the same set of external VLs via the trunk.\n* NOTE 3: \tThe map entry value shall be set to \"null\" in order to delete a \"VnfExtCpConfig\" entry identified\n by a particular key value from the map, i.e. for the disconnection of an existing external\n CP instance addressed by cpInstanceId in the deleted map entry from a particular external\n virtual link, and deletion of that instance in case it represents a subport. Deleting the\n last key from the map removes the affected instance of the \"VnfExtCpData\" structure from\n its parent data structure.\n* NOTE 4: If, as defined by the input parameters of a \"ChangeVnfFlavour\", \"ChangeExtVnfConnectivity\" or\n \"ChangeCurrentVnfPkg\" operation, a cpConfig map entry identified by a particular map key value \n is moved into another \"ExtVirtualLinkData\" or \"VnfExtCpData\" structure, this particular cpConfig\n map entry may be used by an external CP instance different than the one that has used it before the\n operation, or by no external CP instance at all. Renaming a CPD identifier during the \"changeCurrentVnfPkg\"\n operation does not count as moving the related \"cpConfig\" map entries to a new \"extCpData\" structure.\n* NOTE 5: Subports need not be used for containerized VNFCs. The application container can send and receive IP\n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster\n network has been configured appropriately. Thus, no individual cpConfig, except the one representing the\n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 6: In the case that the cloud native template included in the MCIOP describes the set of VNFC instances, for\n containerized VNFCs individual connection points need not be configured for each VNFC instance. It is only\n required to configure one \"cpConfig\" per \"cpdId\", not per VNFC instance. The case of using, for a scalable\n VDU, a cloud native template in the MCIOP that describes one single VNFC instance is not specified in the\n present document version.\n", "type": "object", "required": [ "cpdId" @@ -778,10 +779,10 @@ "type": "string" }, "cpConfig": { - "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3 and 4.\n", + "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5 and 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the\n \"resourceHandle\" attribute in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -846,23 +847,6 @@ ] } ], - "oneOf": [ - { - "required": [ - "fixedAddresses" - ] - }, - { - "required": [ - "numDynamicAddresses" - ] - }, - { - "required": [ - "ipAddressRange" - ] - } - ], "properties": { "macAddress": { "description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n", @@ -889,6 +873,23 @@ "required": [ "type" ], + "oneOf": [ + { + "required": [ + "fixedAddresses" + ] + }, + { + "required": [ + "numDynamicAddresses" + ] + }, + { + "required": [ + "addressRange" + ] + } + ], "properties": { "type": { "description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n", @@ -941,7 +942,7 @@ } }, "virtualCpAddress": { - "description": "This type represents network address data for a virtual CP.\n* NOTE 1: If the container cluster is set up to be able to configure an external load balancer this address will be used,\n otherwise it will be ignored by the CISM.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for Kubernetes® that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp and the addressPoolName attributes shall not be present at the same time.\n", + "description": "This type represents network address data for a virtual CP.\n* NOTE 1: The loadBalancerIp and the loadBalancerSourceRanges attributes are only used if the \n CIS cluster is set up to be able to configure an external load balancer. Otherwise, it shall be ignored.\n\n* NOTE 2: In case the cluster can configure an external load balancer but no loadBalancerIp is provided the container\n cluster will assign an IP address.\n\n* NOTE 3: The attribute is only relevant if the virtual CP is instantiated in a cluster that supports configuration of IP \n address pools for virtual CPs. Otherwise it shall be ignored. MetalLB is an example of a solution for \n Kubernetes┬« that supports configuration of address pools for load balancer services.\n\n* NOTE 4: The loadBalancerIp, addressPoolName and the externalIp attributes shall not be present at the same time.\n", "type": "object", "required": [ "type" @@ -960,9 +961,34 @@ "type": "string", "format": "IP" }, + "externalIp": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, "addressPoolName": { - "description": "Name of an address pool from which an IP address is assigned to the virtual CP.\n", + "description": "Name of an address pool from which the CIS cluster will assign an IP address to the virtual CP. See notes 3 and 4.\n", "type": "string" + }, + "loadBalancerSourceRanges": { + "description": "List of client IP address ranges allowed to access an external load balancer. See note 1.\n", + "type": "object", + "required": [ + "minAddress", + "maxAddress" + ], + "properties": { + "minAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + }, + "maxAddress": { + "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n", + "type": "string", + "format": "IP" + } + } } } } @@ -1102,39 +1128,6 @@ "vnfdVersion": { "description": "A version.\n", "type": "string" - }, - "vimConnectionInfo": { - "description": "If present, this attribute signals the changes to VIM connection info that were passed in the related \"ChangeCurrentVnfPkgRequest\" structure. The provisions for sensitive information defined in clause 4.4.1.6 apply.\n", - "type": "object", - "additionalProperties": { - "description": "This type represents parameters to connect to a VIM, a CISM, a CIR or a MCIOP repository for managing the resources of a VNF instance.\nThis structure is used to convey VIM-related, CISM-related, CIR-related, or MCIOP-repository-relate dparameters over the Or-Vnfm interface. Additional parameters for a VIM, a CISM, a CIR or a MCIOP repository may be configured into the VNFM by means outside the scope of the present document and bound to the identifier of that VIM.\n* NOTE 1:\tIf applicable, this attribute also provides information about the resourceGroupIds\n that are accessible using a particular set of credentials. See definition of\n \"resourceGroupId\" in clause 9.5.3.3.\n* NOTE 2:\tOnce the connectivity between VNFM and VIM, CISM, CIR or MCIOP repository is provided\n through a secure connection over HTTP Secure (HTTP over SSL/TLS), and the connection might also be\n established through a VPN (for example TLS-based VPN tunnelling) for site-to-site connection, the\n \"accessInfo\" JSON data structure, and the sensitive data related information (\"username\"/\"password\" as\n required properties for authentication purpose), will be transmitted as plain text through a TLS tunnel\n without additional encoding/encryption before transmitting it, making the sensitive data visible to the\n endpoint. The base64 encoded certificates are only used by the VNFM to verify the authenticity of the\n interface endpoint of the VIM., CISM, CIR or MCIOP repository.\n", - "type": "object", - "required": [ - "vimType" - ], - "properties": { - "vimId": { - "description": "An identifier with the intention of being globally unique.\n", - "type": "string" - }, - "vimType": { - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM., CISM, CIR or MCIOP repository. The set of permitted values is expected to change over time as new types or versions of VIMs become available. The ETSI NFV registry of VIM-related information [i.3] provides access to information about VimConnectionInfo definitions for various VIM, CISM, CIR or MCIOP repository types. The structure of the registry is defined in annex C.\n", - "type": "string" - }, - "interfaceInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "accessInfo": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - }, - "extra": { - "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", - "type": "object" - } - } - } } } }, -- GitLab From 4b78c7a747f981918c2af2be7c853bac0c816dad Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Mon, 9 Dec 2024 17:50:05 +0500 Subject: [PATCH 10/37] add header check for Location as per SOL002 specifications --- .../ChangeCurrentVNFPackageTask.robot | 2 ++ .../ChangeExternalVNFConnectivityTask.robot | 2 ++ SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot | 2 ++ SOL002/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot | 2 ++ SOL002/VNFLifecycleManagement-API/HealVNFTask.robot | 2 ++ SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot | 1 + SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot | 3 +++ SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot | 2 ++ .../VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot | 2 ++ SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot | 3 +++ SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot | 3 +++ SOL002/VNFLifecycleManagement-API/Subscriptions.robot | 2 ++ SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot | 2 ++ SOL002/VNFLifecycleManagement-API/VNFInstances.robot | 2 ++ SOL002/VNFLifecycleManagement-API/VNFSnapshots.robot | 2 ++ 15 files changed, 32 insertions(+) diff --git a/SOL002/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot b/SOL002/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot index a5b55364..4200cd30 100644 --- a/SOL002/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ChangeCurrentVNFPackageTask.robot @@ -19,6 +19,7 @@ POST Change current VNF Package Task ... Post-Conditions: in response header Location shall not be null POST Change Current VNF Package Task Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id POST Change current VNF Package Task - Conflict @@ -92,6 +93,7 @@ POST Change current VNF Package Task with permitted authorization scope ... Post-Conditions: in response header Location shall not be null POST Change Current VNF Package Task with permitted authorization scope Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id POST Change current VNF Package Task with not permitted authorization scope [Documentation] Test ID: 6.3.5.22.8 diff --git a/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot b/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot index d5046bf1..faf86d24 100644 --- a/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ChangeExternalVNFConnectivityTask.robot @@ -19,6 +19,7 @@ POST Change external VNF connectivity ... Post-Conditions: in response header Location shall not be null POST Change External VNF Connectivity Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id GET Change external VNF connectivity - Method not implemented @@ -92,6 +93,7 @@ POST Change external VNF connectivity with permitted authorization scope ... Post-Conditions: in response header Location shall not be null POST Change External VNF Connectivity with permitted authorization scope Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id POST Change external VNF connectivity with not permitted authorization scope [Documentation] Test ID: 6.3.5.10.8 diff --git a/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot b/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot index 6741749b..1e324ded 100644 --- a/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ChangeVNFFlavourTask.robot @@ -19,6 +19,7 @@ POST Change deployment flavour of a vnfInstance ... Post-Conditions: in response header Location shall not be null POST Change VNF deployment flavour Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id POST Change deployment flavour of a vnfInstance Conflict (Not-Instantiated) @@ -105,6 +106,7 @@ POST Change deployment flavour of a vnfInstance with permited authorization scop ... Post-Conditions: in response header Location shall not be null POST Change VNF deployment flavour with permited authorization scope Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id POST Change deployment flavour of a vnfInstance with not permited authorization scope diff --git a/SOL002/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot b/SOL002/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot index 2e9d0dcd..fb27077f 100644 --- a/SOL002/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot +++ b/SOL002/VNFLifecycleManagement-API/CreateVNFSnapshotTask.robot @@ -19,6 +19,7 @@ POST Create VNF Snapshot Task ... Post-Conditions: in response header Location shall not be null POST Create VNF Snapshot Task Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id POST Create VNF Snapshot Task - NOT FOUND @@ -118,6 +119,7 @@ POST Create VNF Snapshot Task with permitted authorization scope ... Post-Conditions: in response header Location shall not be null POST Create VNF Snapshot Task with permitted authorization scope Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id POST Create VNF Snapshot Task with not permitted authorization scope [Documentation] Test ID: 6.3.5.23.10 diff --git a/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot b/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot index f748eeba..44271af5 100644 --- a/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/HealVNFTask.robot @@ -19,6 +19,7 @@ POST Heal a vnfInstance ... Post-Conditions: none POST Heal VNF Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id POST Heal a vnfInstance Conflict (Not-Instantiated) @@ -106,6 +107,7 @@ POST Heal a vnfInstance with permitted authorization scope ... Post-Conditions: none POST Heal VNF with permitted authorization scope Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id POST Heal a vnfInstance with not permitted authorization scope [Documentation] Test ID: 6.3.5.8.9 diff --git a/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot index 04225fd6..4e89d80f 100644 --- a/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot +++ b/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot @@ -63,6 +63,7 @@ PATCH Individual VNFInstance ... Post-Conditions: VNF instance modified PATCH individual vnfInstance Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id PATCH Individual VNFInstance Precondition failed diff --git a/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot b/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot index c79d6f1a..bca14314 100644 --- a/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot @@ -21,6 +21,7 @@ POST Instantiate a vnfInstance ... Post-Conditions: none POST instantiate individual vnfInstance Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id POST Instantiate a vnfInstance Conflict @@ -121,6 +122,8 @@ POST Instantiate a vnfInstance with permited authorization scope ... Post-Conditions: none POST instantiate individual vnfInstance with permitted authorization scope Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check Operation Occurrence Id POST Instantiate a vnfInstance with not permited authorization scope [Documentation] Test ID: 6.3.5.3.10 diff --git a/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot b/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot index 7ad05a0d..9d6aa70b 100644 --- a/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/OperateVNFTask.robot @@ -19,6 +19,7 @@ POST Operate a vnfInstance ... Post-Conditions: none POST Operate VNF Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id POST Operate a vnfInstance Conflict (Not-Instantiated) @@ -105,6 +106,7 @@ POST Operate a vnfInstance with permitted authorization scope ... Post-Conditions: none POST Operate VNF with permitted authorization scope Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id POST Operate a vnfInstance with not permitted authorization scope [Documentation] Test ID: 6.3.5.9.9 diff --git a/SOL002/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot b/SOL002/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot index 6997b80a..c4aadf2b 100644 --- a/SOL002/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot +++ b/SOL002/VNFLifecycleManagement-API/RevertToVNFSnapshotTask.robot @@ -19,6 +19,7 @@ POST Revert to VNF Snapshot Task ... Post-Conditions: in response header Location shall not be null POST Revert to VNF Snapshot Task Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id POST Revert to VNF Snapshot Task - NOT FOUND @@ -105,6 +106,7 @@ POST Revert to VNF Snapshot Task with permitted authorization scope ... Post-Conditions: in response header Location shall not be null POST Revert to VNF Snapshot Task with permitted authorization scope Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id POST Revert to VNF Snapshot Task with not permitted authorization scope [Documentation] Test ID: 6.3.5.24.9 diff --git a/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot b/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot index 976b7041..99973cce 100644 --- a/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ScaleVNFTask.robot @@ -19,6 +19,7 @@ POST Scale a vnfInstance ... Post-Conditions: none POST Scale vnfInstance 0 Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id POST Scale a vnfInstance Conflict (Not-Instantiated) @@ -106,6 +107,8 @@ POST Scale a vnfInstance with permited authorization scope ... Post-Conditions: none POST Scale vnfInstance with permitted authorization scope 0 Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check Operation Occurrence Id POST Scale a vnfInstance with not permited authorization scope [Documentation] Test ID: 6.3.5.4.9 diff --git a/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot b/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot index 5fd08f49..24d68e89 100644 --- a/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot +++ b/SOL002/VNFLifecycleManagement-API/ScaleVNFToLevelTask.robot @@ -18,6 +18,7 @@ POST Scale a vnfInstance to level with Attribute instantiationLevelId ... Post-Conditions: none POST Scale vnfInstance to level with instantiationLevelId Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id @@ -106,6 +107,8 @@ POST Scale a vnfInstance to level with Attribute instantiationLevelId and permit ... Post-Conditions: none POST Scale vnfInstance to level with instantiationLevelId and permitted authorization scope Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location + Check Operation Occurrence Id POST Scale a vnfInstance to level with Attribute instantiationLevelId and not permitted authorization scope [Documentation] Test ID: 6.3.5.5.9 diff --git a/SOL002/VNFLifecycleManagement-API/Subscriptions.robot b/SOL002/VNFLifecycleManagement-API/Subscriptions.robot index 7bcbe8b8..0c0c198a 100644 --- a/SOL002/VNFLifecycleManagement-API/Subscriptions.robot +++ b/SOL002/VNFLifecycleManagement-API/Subscriptions.robot @@ -21,6 +21,7 @@ POST Create a new subscription ... Post-Conditions: in response header Location shall not be null Post Create subscription Check HTTP Response Status Code Is 201 + Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is subscription POST Create a new Subscription - DUPLICATION @@ -226,6 +227,7 @@ POST Create a new subscription with permitted authorization scope ... Post-Conditions: in response header Location shall not be null Post Create subscription with permitted authorization scope Check HTTP Response Status Code Is 201 + Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is subscription POST Create a new subscription with not permitted authorization scope [Documentation] Test ID: 6.3.5.17.18 diff --git a/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot b/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot index e955e495..ce45be3f 100644 --- a/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/TerminateVNFTask.robot @@ -19,6 +19,7 @@ POST Terminate a vnfInstance ... Post-Conditions: none POST Terminate VNF Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id POST Terminate a vnfInstance Conflict (Not-Instantiated) @@ -92,6 +93,7 @@ POST Terminate a vnfInstance with permited authorization scope ... Post-Conditions: none POST Terminate VNF with permitted authorization scope Check HTTP Response Status Code Is 202 + Check HTTP Response Header Contains Location Check Operation Occurrence Id POST Terminate a vnfInstance with not permited authorization scope [Documentation] Test ID: 6.3.5.7.8 diff --git a/SOL002/VNFLifecycleManagement-API/VNFInstances.robot b/SOL002/VNFLifecycleManagement-API/VNFInstances.robot index 79fec640..a89e46c8 100644 --- a/SOL002/VNFLifecycleManagement-API/VNFInstances.robot +++ b/SOL002/VNFLifecycleManagement-API/VNFInstances.robot @@ -18,6 +18,7 @@ POST Create a new vnfInstance ... Post-Conditions: VNF instance created POST Create a new vnfInstance Check HTTP Response Status Code Is 201 + Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is vnfInstance Check HTTP Response Body vnfInstance content against VNF Descriptor @@ -185,6 +186,7 @@ POST Create a new vnfInstance with permitted authorization scope ... Post-Conditions: VNF instance created POST Create a new vnfInstance with permitted authorization scope Check HTTP Response Status Code Is 201 + Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is vnfInstance Check HTTP Response Body vnfInstance content against VNF Descriptor POST Create a new vnfInstance with not permitted authorization scope diff --git a/SOL002/VNFLifecycleManagement-API/VNFSnapshots.robot b/SOL002/VNFLifecycleManagement-API/VNFSnapshots.robot index 588cff4f..0bc22eaa 100644 --- a/SOL002/VNFLifecycleManagement-API/VNFSnapshots.robot +++ b/SOL002/VNFLifecycleManagement-API/VNFSnapshots.robot @@ -14,6 +14,7 @@ POST Create a new VNF Snapshot ... Post-Conditions: VNF snapshot is created POST Create a new VNF Snapshot Check HTTP Response Status Code Is 201 + Check Http Response Header Contains Location Check HTTP Response Body Json Schema Is VnfSnapshotInfo Check HTTP Location Header Contains URI of Created Resource @@ -193,6 +194,7 @@ POST Create a new VNF Snapshot with permitted authorization scope ... Post-Conditions: VNF snapshot is created POST Create a new VNF Snapshot with permitted authorization scope Check HTTP Response Status Code Is 201 + Check Http Response Header Contains Location Check HTTP Response Body Json Schema Is VnfSnapshotInfo Check HTTP Location Header Contains URI of Created Resource POST Create a new VNF Snapshot with not permitted authorization scope -- GitLab From fd8859bd8b594a6ceb8803b0831cbf7d5090f01c Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Wed, 11 Dec 2024 12:46:51 +0500 Subject: [PATCH 11/37] update document version number of descriptors --- .../descriptors/SOL001/VNFD/vnfd_SOL001.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOL002/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml b/SOL002/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml index fba0c049..af1d9915 100644 --- a/SOL002/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml +++ b/SOL002/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml @@ -44,7 +44,7 @@ node_types: type: list entry_schema: type: string - default: [ 'etsivnfm:v4.5.1' ] + default: [ 'etsivnfm:v5.1.1' ] interfaces: Vnflcm: type: "tosca.interfaces.nfv.Vnflcm" -- GitLab From b2392a1ffc30d10173aab65c8433eb1bdbd0a541 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Wed, 11 Dec 2024 15:56:36 +0500 Subject: [PATCH 12/37] correct vnfinstance response body schema as per documentation --- .../schemas/vnfInstance.schema.json | 5 ----- .../schemas/vnfInstances.schema.json | 5 ----- 2 files changed, 10 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json index 8cff67c8..44af7079 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json @@ -453,11 +453,6 @@ "resourceTemplateId" ], "oneOf": [ - { - "required": [ - "resourceTemplateId" - ] - }, { "required": [ "requestedCpuResources" diff --git a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json index f37aa985..6a050bd7 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json @@ -455,11 +455,6 @@ "resourceTemplateId" ], "oneOf": [ - { - "required": [ - "resourceTemplateId" - ] - }, { "required": [ "requestedCpuResources" -- GitLab From 3a654c50b6e62b9012a7713e2392e7a3735b5943 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Tue, 17 Dec 2024 11:05:11 +0500 Subject: [PATCH 13/37] test different methods of notification endpoint of VNF LCM as per SOL 002 specification version 5.1.1 --- .../NotificationEndpoint.robot | 47 +++++++++++++++++++ .../VnfLcmOperationKeywords.robot | 33 +++++++++++++ 2 files changed, 80 insertions(+) diff --git a/SOL002/VNFLifecycleManagement-API/NotificationEndpoint.robot b/SOL002/VNFLifecycleManagement-API/NotificationEndpoint.robot index 451c5f51..c11f60d2 100644 --- a/SOL002/VNFLifecycleManagement-API/NotificationEndpoint.robot +++ b/SOL002/VNFLifecycleManagement-API/NotificationEndpoint.robot @@ -45,6 +45,53 @@ VNF Identifier Deletion Notification Post VNF Identifier Deletion Notification Check HTTP Response Status Code Is 204 +Test the Notification Endpoint - Successful + [Documentation] Test ID: 6.3.5.21.4 + ... Test title: Test the Notification Endpoint - Successful + ... Test objective: The objective is to test the Notification Endpoint provided by the notification consumer. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 5.4.20.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Get reach the notification endpoint + Check HTTP Response Status Code Is 204 +PUT Notification endpoint - Method Not Implemented + [Documentation] Test ID: 6.3.5.21.5 + ... Test title: PUT Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the PUT method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 5.4.20.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + PUT notification endpoint + Check HTTP Response Status Code Is 405 + +PATCH Notification endpoint - Method Not Implemented + [Documentation] Test ID: 6.3.5.21.6 + ... Test title: PATCH Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the PATCH method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 5.4.20.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + PATCH notification endpoint + Check HTTP Response Status Code Is 405 + +DELETE Notification endpoint - Method Not Implemented + [Documentation] Test ID: 6.3.5.21.7 + ... Test title: DELETE Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the DELETE method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 5.4.20.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + DELETE notification endpoint + Check HTTP Response Status Code Is 405 + *** Keywords *** Check resource existence and get CallbackUri Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index 90deab04..0ab3debd 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -2444,4 +2444,37 @@ POST Create a new VNF Snapshot with not permitted authorization scope Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_snapshots ${body} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +GET reach the notification endpoint + Log Trying to reach the notification endpoint using GET method. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +PUT notification endpoint + Log Trying to perform a PUT. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +PATCH notification endpoint + Log Trying to perform a PATCH. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE notification endpoint + Log Trying to perform a DELETE. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file -- GitLab From 0f410fc645bf1b43bc8bb876953083c39a98fff7 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Tue, 17 Dec 2024 16:24:59 +0500 Subject: [PATCH 14/37] implement missing test cases for mandatory response codes as per SOL 002 specifications version 5.1.1 --- .../VNFLifecycleManagement-API/VNFInstances.robot | 12 ++++++++++++ .../VnfLcmOperationOccurences.robot | 13 ++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/SOL002/VNFLifecycleManagement-API/VNFInstances.robot b/SOL002/VNFLifecycleManagement-API/VNFInstances.robot index a89e46c8..73f266c4 100644 --- a/SOL002/VNFLifecycleManagement-API/VNFInstances.robot +++ b/SOL002/VNFLifecycleManagement-API/VNFInstances.robot @@ -201,3 +201,15 @@ POST Create a new vnfInstance with not permitted authorization scope POST Create a new vnfInstance with not permitted authorization scope Check HTTP Response Status Code Is 403 Check HTTP Response Body Json Schema Is ProblemDetails +GET information about multiple VNF instances - Bad Request Response too big + [Documentation] Test ID: 6.3.5.1.16 + ... Test title: GET information about multiple VNF instances - Bad Request Response too big + ... Test objective: The objective is to test that GET method fail retrieving information about multiple VNF instances because Response is too big. + ... Pre-conditions: none + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: none + GET multiple vnfInstances + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot index e26c9267..59186ec4 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot @@ -211,4 +211,15 @@ GET status information about multiple VNF LCM operation occurrences with not per GET VNF LCM OP occurrences with not permitted authorization scope Check HTTP Response Status Code Is 403 Check HTTP Response Body Json Schema Is ProblemDetails - \ No newline at end of file +GET information about multiple VNF instances - Bad Request Response too big + [Documentation] Test ID: 6.3.5.11.17 + ... Test title: GET information about multiple VNF instances - Bad Request Response too big + ... Test objective: The objective is to test that GET method fail retrieving information about multiple VNF LCM operation occurrences because Response is too big. + ... Pre-conditions: none + ... Reference: Clause 5.4.12.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: none + GET VNF LCM OP occurrences + Check HTTP Response Status Code Is 400 + Check HTTP Response Body Json Schema Is ProblemDetails -- GitLab From 6c446fb33cdcf7e7c2c1788b420f2e864d4b05cf Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Tue, 17 Dec 2024 16:28:14 +0500 Subject: [PATCH 15/37] implement test case to check 401 response code for instantiateVNFTask --- .../InstantiateVNFTask.robot | 12 ++++++++++++ .../VnfLcmOperationKeywords.robot | 11 +++++++++++ 2 files changed, 23 insertions(+) diff --git a/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot b/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot index bca14314..c83588ab 100644 --- a/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot +++ b/SOL002/VNFLifecycleManagement-API/InstantiateVNFTask.robot @@ -137,6 +137,18 @@ POST Instantiate a vnfInstance with not permited authorization scope POST instantiate individual vnfInstance with not permitted authorization scope Check HTTP Response Status Code Is 403 Check HTTP Response Body Json Schema Is ProblemDetails +POST Instantiate a vnfInstance with not valid authorization token + [Documentation] Test ID: 6.3.5.3.11 + ... Test title: POST Instantiate a vnfInstance with non permited authorization scope + ... Test objective: The objective is to instantiate a VNF instance using incorrect OAuth scope value with not permited authorization scope + ... Pre-conditions: none + ... Reference: Clause 5.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: none + POST instantiate individual vnfInstance with not valid authorization token + Check HTTP Response Status Code Is 401 + Check HTTP Response Body Json Schema Is ProblemDetails *** Keywords *** Check resource existence Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index 0ab3debd..c6419f23 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -1884,6 +1884,17 @@ POST instantiate individual vnfInstance with not permitted authorization scope ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} +POST instantiate individual vnfInstance with not valid authorization token + Log Trying to Instantiate a vnf Instance with OAuth Token with non authorized tokken + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + ${template}= Get File jsons/instantiateVnfRequest.json + ${body}= Format String ${template} flavourId=${flavourId} + Post ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_instances/${vnfInstanceId}/instantiate ${body} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + POST Scale vnfInstance with permitted authorization scope [Arguments] ${vnf_state} [Documentation] ${vnf_state} differentiate the VNF ID to be used in the different POST requests -- GitLab From 02d6736105abc6258313e14f643049521887d745 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Tue, 17 Dec 2024 17:26:30 +0500 Subject: [PATCH 16/37] correct the response codes as per SOL specifications --- .../FailOperationTask.robot | 4 ++-- .../VnfLcmOperationOccurences.robot | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/FailOperationTask.robot b/SOL002/VNFLifecycleManagement-API/FailOperationTask.robot index f5b4933b..48b4634a 100644 --- a/SOL002/VNFLifecycleManagement-API/FailOperationTask.robot +++ b/SOL002/VNFLifecycleManagement-API/FailOperationTask.robot @@ -17,7 +17,7 @@ POST Fail operation task ... Applicability: none ... Post-Conditions: none Post Fail operation - Check HTTP Response Status Code Is 202 + Check HTTP Response Status Code Is 200 Check Operation Occurrence Id Check operation resource state is FINALLY_FAILED @@ -104,7 +104,7 @@ POST Fail operation task with permitted authorization scope ... Applicability: none ... Post-Conditions: none Post Fail operation with permitted authorization scope - Check HTTP Response Status Code Is 202 + Check HTTP Response Status Code Is 200 Check Operation Occurrence Id Check operation resource state is FINALLY_FAILED POST Fail operation task with not permitted authorization scope diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot index 59186ec4..6c1d5149 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationOccurences.robot @@ -30,7 +30,7 @@ GET status information about multiple VNF LCM operation occurrences ... Applicability: none ... Post-Conditions: none GET VNF LCM OP occurrences - Check HTTP Response Status Code Is 202 + Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is VnfLcmOpOccs Check HTTP Response Body vnf LCM OpOCCs content against VNF Descriptor @@ -70,7 +70,7 @@ GET status information about multiple VNF LCM Operation occurrences with "all_fi ... Applicability: none ... Post-Conditions: none Get VNF LCM Operation occurrences with all_fields attribute selector - Check HTTP Response Status Code Is 202 + Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is VnfLcmOpOccs GET status information about multiple VNF LCM Operation occurrences with "exlude_default" @@ -83,7 +83,7 @@ GET status information about multiple VNF LCM Operation occurrences with "exlude ... Applicability: none ... Post-Conditions: none Get VNF LCM Operation occurrences with exclude_default attribute selector - Check HTTP Response Status Code Is 202 + Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is VnfLcmOpOccs GET status information about multiple VNF LCM Operation occurrences with "fields" @@ -96,7 +96,7 @@ GET status information about multiple VNF LCM Operation occurrences with "fields ... Applicability: none ... Post-Conditions: none Get VNF LCM Operation occurrences with fields attribute selector - Check HTTP Response Status Code Is 202 + Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is VnfLcmOpOccs GET status information about multiple VNF LCM Operation occurrences with "exclude_fields" @@ -109,7 +109,7 @@ GET status information about multiple VNF LCM Operation occurrences with "exclud ... Applicability: none ... Post-Conditions: none Get VNF LCM Operation occurrences with exclude_fields attribute selector - Check HTTP Response Status Code Is 202 + Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is VnfLcmOpOccs PUT status information about multiple VNF LCM operation occurrences - Method not implemented @@ -196,7 +196,7 @@ GET status information about multiple VNF LCM operation occurrences with permitt ... Applicability: none ... Post-Conditions: none GET VNF LCM OP occurrences with permitted authorization scope - Check HTTP Response Status Code Is 202 + Check HTTP Response Status Code Is 200 Check HTTP Response Body Json Schema Is VnfLcmOpOccs Check HTTP Response Body vnf LCM OpOCCs content against VNF Descriptor GET status information about multiple VNF LCM operation occurrences with not permitted authorization scope -- GitLab From f305872dc3bbc39f1f13e9dcc4b610699925a5e2 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Tue, 17 Dec 2024 17:42:30 +0500 Subject: [PATCH 17/37] update api version number in variable.txt as per SOL002 specifications --- SOL002/VNFLifecycleManagement-API/environment/variables.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOL002/VNFLifecycleManagement-API/environment/variables.txt b/SOL002/VNFLifecycleManagement-API/environment/variables.txt index dd51a649..7203ec85 100644 --- a/SOL002/VNFLifecycleManagement-API/environment/variables.txt +++ b/SOL002/VNFLifecycleManagement-API/environment/variables.txt @@ -13,7 +13,7 @@ ${ACCEPT_JSON} application/json ${apiRoot} / ${apiName} vnflcm ${apiMajorVersion} v2 -${API_VERSION} 2.12.0 +${API_VERSION} 2.14.0 ${AUTH_USAGE} 1 ${OAUTH_Encryption_ALGORITHM} HS256 ${NEG_SCOPE} vnflcm:v2:invalid -- GitLab From 961362d60aa382d26c5b653b897a8d00dcaeeb2b Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 17 Jan 2025 15:15:23 +0500 Subject: [PATCH 18/37] implement cancel operations task - Starting as per Tacker feedback --- .../CancelOperationTask.robot | 13 +++++++++++++ .../VnfLcmOperationKeywords.robot | 6 +++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot b/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot index 996087f6..d6219c1a 100644 --- a/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot +++ b/SOL002/VNFLifecycleManagement-API/CancelOperationTask.robot @@ -121,6 +121,19 @@ Post Cancel operation task with not permitted authorization scope Check HTTP Response Status Code Is 403 Check HTTP Response Body Json Schema Is ProblemDetails +Post Cancel operation task - STARTING + [Documentation] Test ID: 6.3.5.16.10 + ... Test title: POST Cancel operation task + ... Test objective: The POST method initiates cancelling an ongoing VNF lifecycle operation while it is being executed, i.e. the "VNF LCM operation occurrence" is in "STARTING" state. + ... Pre-conditions: the "VNF LCM operation occurrence" is in "STARTING" state. + ... Reference: Clause 5.4.17.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_VE + ... Applicability: none + ... Post-Conditions: the resource is in ROLLED_BACK state + POST Cancel operation task + Check HTTP Response Status Code Is 202 + Check operation resource state is ROLLED_BACK + *** Keywords *** Check resource existence Set Headers {"Accept":"${ACCEPT}"} diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index c6419f23..df0887c6 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -2488,4 +2488,8 @@ DELETE notification endpoint Delete ${callbackResp} ${outputResponse}= Output response Set Global Variable ${response} ${outputResponse} - \ No newline at end of file + +Check operation resource state is ROLLED_BACK + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} + String response body instantiationState ROLLED_BACK \ No newline at end of file -- GitLab From a2b23593883e9cb3ca5f485209853d1170beaaf5 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Mon, 20 Jan 2025 16:54:44 +0500 Subject: [PATCH 19/37] implement test case to get Paged Response with nextpage_opauque_marker parameter --- .../VNFInstances.robot | 25 +++++++++++++++++++ .../VnfLcmOperationKeywords.robot | 24 +++++++++++++++++- 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/SOL002/VNFLifecycleManagement-API/VNFInstances.robot b/SOL002/VNFLifecycleManagement-API/VNFInstances.robot index 73f266c4..d8c9ee28 100644 --- a/SOL002/VNFLifecycleManagement-API/VNFInstances.robot +++ b/SOL002/VNFLifecycleManagement-API/VNFInstances.robot @@ -213,3 +213,28 @@ GET information about multiple VNF instances - Bad Request Response too big GET multiple vnfInstances Check HTTP Response Status Code Is 400 Check HTTP Response Body Json Schema Is ProblemDetails + +GET information about multiple VNF instances to get Paged Response + [Documentation] Test ID: 6.3.5.1.17 + ... Test title: GET information about multiple VNF instances to get Paged Response + ... Test objective: The objective is to query information about multiple VNF instances to get Paged Response. + ... Pre-conditions: none + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_VNFM + ... Applicability: The VNFM supports response paging for the subscriptions resources + ... Post-Conditions: none + GET multiple vnfInstances + Check HTTP Response Status Code Is 200 + Check HTTP Response Header Contain Link to next page + +GET information about multiple VNF instances as a Paged Response with nextpage_opauque_marker parameter + [Documentation] Test ID: 6.3.5.1.17a + ... Test title: GET information about multiple VNF instances as a Paged Response with nextpage_opauque_marker parameter + ... Test objective: The objective is to query information about multiple VNF instances as a Paged Response and retrieve the next page using the nextpage_opaque_marker parameter + ... Pre-conditions: A request for retrieving multiple VNF instances as a paged response has been successfully issued (Test ID 6.3.5.1.17) + ... Reference: Clause 5.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_VNFM + ... Applicability: The VNFM supports response paging for the VNF instance resources + ... Post-Conditions: none + Get multiple vnfInstances with nextpage_opaque_marker parameter + Check HTTP Response Status Code Is 200 \ No newline at end of file diff --git a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot index df0887c6..988f7a56 100644 --- a/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot +++ b/SOL002/VNFLifecycleManagement-API/VnfLcmOperationKeywords.robot @@ -2492,4 +2492,26 @@ DELETE notification endpoint Check operation resource state is ROLLED_BACK Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} Get ${apiRoot}/${apiName}/${apiMajorVersion}/vnf_lcm_op_occs/${vnfLcmOpOccId} - String response body instantiationState ROLLED_BACK \ No newline at end of file + String response body instantiationState ROLLED_BACK + +Check HTTP Response Header Contain Link to next page + ${linkURL}= Get Value From Json ${response['headers']} $..Link + Should Not Be Empty ${linkURL} + Log Check that Link header contains rel set to next + Should Contain ${linkURL} rel="next" + Log Check that Link header contains URI to next page between <> + ${linkHeaderUri}= Get Regexp Matches ${linkURL} (?<=\<)(.*?)(?=\>) + ${length}= Get Length ${linkHeaderUri} + Should Be Equal As Integers ${length} 0 + Set Global Variable ${nextPageUri} ${linkHeaderUri[0]} + +Get multiple vnfInstances with nextpage_opaque_marker parameter + Log Get next page of subscriptions + Set Headers {"Accept":"${ACCEPT}"} + Set Headers {"Version": "${API_VERSION}"} + Set Headers {"Content-Type": "${CONTENT_TYPE}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Log Execute Query using the URI provided in the previous GET request and validate response + Get ${nextPageUri} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} -- GitLab From f68759c3788aec214a0f9a0ecf2860976aeef1a1 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Mon, 20 Jan 2025 16:57:17 +0500 Subject: [PATCH 20/37] implement test case to Get Information about an individual VNF Instance - Not Found --- .../IndividualVNFInstance.robot | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot b/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot index 4e89d80f..36e1e8fb 100644 --- a/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot +++ b/SOL002/VNFLifecycleManagement-API/IndividualVNFInstance.robot @@ -142,4 +142,16 @@ GET Information about an individual VNF Instance with permitted authorization sc GET individual vnfInstance with not permitted authorization scope Check HTTP Response Status Code Is 403 Check HTTP Response Body Json Schema Is ProblemDetails +Get Information about an individual VNF Instance - Not Found + [Documentation] Test ID: 6.3.5.2.11 + ... Test title: Get Information about an individual VNF Instance - Not Found + ... Test objective: The objective is to test that the retrieval of an individual VNF Instance fails when instance is not present. + ... Pre-conditions: none + ... Reference: Clause 5.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + GET individual vnfInstance + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file -- GitLab From 01d7e0b2749e17183cea42f449c5e1e494cc9ff2 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Mon, 20 Jan 2025 17:04:37 +0500 Subject: [PATCH 21/37] implement test case to Get Individual VNF LCM Operation occurrences - Not Found --- .../IndividualVnfLcmOperationOccurence.robot | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot b/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot index b69413df..1b626f70 100644 --- a/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot +++ b/SOL002/VNFLifecycleManagement-API/IndividualVnfLcmOperationOccurence.robot @@ -93,3 +93,16 @@ Get status information about individual VNF instances with not permitted authori Get Individual VNF LCM OP occurrences with not permitted authorization scope Check HTTP Response Status Code Is 403 Check HTTP Response Body Json Schema Is ProblemDetails + +Get Individual VNF LCM Operation occurrences - Not Found + [Documentation] Test ID: 6.3.5.12.8 + ... Test title: Get status information about individual VNF instances - Not Found + ... Test objective: The objective is to test that the retrieval of VNF lifecycle management operation occurrence fails when instance is not present. + ... Pre-conditions: none + ... Reference: Clause 5.4.13.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_VNFM + ... Applicability: none + ... Post-Conditions: none + Get Individual VNF LCM OP occurrences + Check HTTP Response Status Code Is 404 + Check HTTP Response Body Json Schema Is ProblemDetails \ No newline at end of file -- GitLab From 15bde2a53f7c6655d14f00d871fb0ce6d03a0d54 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 23 Jan 2025 10:51:53 +0500 Subject: [PATCH 22/37] Editorial change: handle mojibake in response bodies --- ...cmOperationOccurrenceNotification.schema.json | 6 +++--- .../schemas/VnfSnapshotInfo.schema.json | 16 ++++++++-------- .../schemas/VnfSnapshotsInfo.schema.json | 16 ++++++++-------- .../schemas/subscription.schema.json | 2 +- .../schemas/subscriptions.schema.json | 2 +- .../schemas/vnfInstance.schema.json | 16 ++++++++-------- .../schemas/vnfInstances.schema.json | 16 ++++++++-------- .../schemas/vnfLcmOpOcc.schema.json | 6 +++--- .../schemas/vnfLcmOpOccs.schema.json | 6 +++--- 9 files changed, 43 insertions(+), 43 deletions(-) diff --git a/SOL002/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json index ba97aba3..8a668231 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json @@ -61,7 +61,7 @@ "type": "string" }, "operation": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation \n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the /"Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation \n", "type": "string", "enum": [ "INSTANTIATE", @@ -817,7 +817,7 @@ "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5 and 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes /"netAttDefResourceId/" and /"cpProtocolData/" for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -1031,7 +1031,7 @@ } }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the /"NetAttDefResourceData/" structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", diff --git a/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json index 069853f9..3c0d39d8 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotInfo.schema.json @@ -48,7 +48,7 @@ "type": "string" }, "vnfInstance": { - "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tThese attributes are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n* NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual extCpInfo, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the ΓÇ£scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the VNF \n LCM operation explicitly indicates the scale level for the aspect.\n", + "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tThese attributes are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n* NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual extCpInfo, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the /"scaleStatus/" indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the VNF \n LCM operation explicitly indicates the scale level for the aspect.\n", "type": "object", "required": [ "id", @@ -480,7 +480,7 @@ } }, "type": { - "description": "Type of the resource definition referenced. VALUES ΓÇó\tCOMPUTE ΓÇó\tSTORAGE ΓÇó\tOSCONTAINER", + "description": "Type of the resource definition referenced. VALUES •\tCOMPUTE •\tSTORAGE •\tOSCONTAINER", "type": "string", "enum": [ "COMPUTE", @@ -689,7 +689,7 @@ "type": "array", "minItems": 1, "items": { - "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n ΓÇ£extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n /"extLinkPorts/" attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", "required": [ "id", @@ -899,7 +899,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4. It shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the /"NetAttDefResourceInfo/" structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4. It shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -1545,7 +1545,7 @@ "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5 and 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes /"netAttDefResourceId/" and /"cpProtocolData/" for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -1759,7 +1759,7 @@ } }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the /"NetAttDefResourceData/" structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2386,7 +2386,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the /"NetAttDefResourceInfo/" structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2704,7 +2704,7 @@ "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", "type": "array", "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n /"kind/" property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", "type": "object", "required": [ "mcioId", diff --git a/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json index 85e04634..00eab352 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/VnfSnapshotsInfo.schema.json @@ -50,7 +50,7 @@ "type": "string" }, "vnfInstance": { - "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tThese attributes are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n* NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual extCpInfo, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the ΓÇ£scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the VNF \n LCM operation explicitly indicates the scale level for the aspect.\n", + "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tThese attributes are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n* NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual extCpInfo, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the /"scaleStatus/" indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the VNF \n LCM operation explicitly indicates the scale level for the aspect.\n", "type": "object", "required": [ "id", @@ -482,7 +482,7 @@ } }, "type": { - "description": "Type of the resource definition referenced. VALUES ΓÇó\tCOMPUTE ΓÇó\tSTORAGE ΓÇó\tOSCONTAINER", + "description": "Type of the resource definition referenced. VALUES •\tCOMPUTE •\tSTORAGE •\tOSCONTAINER", "type": "string", "enum": [ "COMPUTE", @@ -691,7 +691,7 @@ "type": "array", "minItems": 1, "items": { - "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n ΓÇ£extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n /"extLinkPorts/" attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", "required": [ "id", @@ -901,7 +901,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4. It shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the /"NetAttDefResourceInfo/" structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4. It shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -1547,7 +1547,7 @@ "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5 and 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes /"netAttDefResourceId/" and /"cpProtocolData/" for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -1761,7 +1761,7 @@ } }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the /"NetAttDefResourceData/" structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2388,7 +2388,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the /"NetAttDefResourceInfo/" structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2706,7 +2706,7 @@ "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", "type": "array", "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n /"kind/" property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", "type": "object", "required": [ "mcioId", diff --git a/SOL002/VNFLifecycleManagement-API/schemas/subscription.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/subscription.schema.json index 82649409..f6e6d344 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/subscription.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/subscription.schema.json @@ -147,7 +147,7 @@ "description": "Match particular VNF lifecycle operation types for the notification of type VnfLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"VnfLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n", "type": "array", "items": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation \n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the /"Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation \n", "type": "string", "enum": [ "INSTANTIATE", diff --git a/SOL002/VNFLifecycleManagement-API/schemas/subscriptions.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/subscriptions.schema.json index 746d754e..e86b4381 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/subscriptions.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/subscriptions.schema.json @@ -149,7 +149,7 @@ "description": "Match particular VNF lifecycle operation types for the notification of type VnfLcmOperationOccurrenceNotification. May be present if the \"notificationTypes\" attribute contains the value \"VnfLcmOperationOccurrenceNotification\", and shall be absent otherwise.\n", "type": "array", "items": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation \n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the /"Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation \n", "type": "string", "enum": [ "INSTANTIATE", diff --git a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json index 44af7079..4506dbcd 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json @@ -1,5 +1,5 @@ { - "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tThese attributes are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n* NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual extCpInfo, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the ΓÇ£scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the VNF \n LCM operation explicitly indicates the scale level for the aspect.\n", + "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tThese attributes are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n* NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual extCpInfo, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the /"scaleStatus/" indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the VNF \n LCM operation explicitly indicates the scale level for the aspect.\n", "type": "object", "required": [ "id", @@ -431,7 +431,7 @@ } }, "type": { - "description": "Type of the resource definition referenced. VALUES ΓÇó\tCOMPUTE ΓÇó\tSTORAGE ΓÇó\tOSCONTAINER", + "description": "Type of the resource definition referenced. VALUES •\tCOMPUTE •\tSTORAGE •\tOSCONTAINER", "type": "string", "enum": [ "COMPUTE", @@ -635,7 +635,7 @@ "type": "array", "minItems": 1, "items": { - "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n ΓÇ£extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n /"extLinkPorts/" attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", "required": [ "id", @@ -845,7 +845,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4. It shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the /"NetAttDefResourceInfo/" structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4. It shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -1491,7 +1491,7 @@ "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5 and 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes /"netAttDefResourceId/" and /"cpProtocolData/" for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -1705,7 +1705,7 @@ } }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the /"NetAttDefResourceData/" structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2332,7 +2332,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the /"NetAttDefResourceInfo/" structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2650,7 +2650,7 @@ "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", "type": "array", "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n /"kind/" property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", "type": "object", "required": [ "mcioId", diff --git a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json index 6a050bd7..24e0ea7a 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/vnfInstances.schema.json @@ -1,7 +1,7 @@ { "type": "array", "items": { - "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tThese attributes are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n* NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual extCpInfo, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the ΓÇ£scaleStatusΓÇ¥ indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the VNF \n LCM operation explicitly indicates the scale level for the aspect.\n", + "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n between the previous and the newly referred VNF package, i.e. when the new VNFD is\n changed with respect to the previous VNFD in other aspects than merely referencing\n to other VNF software images. In order to avoid misalignment of the VnfInstance with\n the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tThese attributes are sometimes also referred to as configuration parameters\n applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n and can be modified later, and others can be set only after instantiation.\n The applicability of certain configuration may depend on the VNF and the required operation of\n the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n* NOTE 7: Subports need not be used for containerized VNFCs. The application container can send and receive IP \n packets with any VLAN tag as long as the network interface to connect to the secondary container cluster \n network has been configured appropriately. Thus, no individual extCpInfo, except the one representing the \n trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 8: For a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n modules, the /"scaleStatus/" indicates the scale level that would be applicable to the aspect if a VNF LCM \n operation changes the selected deployable modules and the related VNFCs are instantiated, unless the VNF \n LCM operation explicitly indicates the scale level for the aspect.\n", "type": "object", "required": [ "id", @@ -433,7 +433,7 @@ } }, "type": { - "description": "Type of the resource definition referenced. VALUES ΓÇó\tCOMPUTE ΓÇó\tSTORAGE ΓÇó\tOSCONTAINER", + "description": "Type of the resource definition referenced. VALUES •\tCOMPUTE •\tSTORAGE •\tOSCONTAINER", "type": "string", "enum": [ "COMPUTE", @@ -637,7 +637,7 @@ "type": "array", "minItems": 1, "items": { - "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n ΓÇ£extLinkPortsΓÇ¥ attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", + "description": "This type represents information about an external CP of a VNF.\nNOTE 1:\tThe attributes \"associatedVnfcCpId\", \"associatedVipCpId\", \"associatedVirtualCpId\" and \n \"associatedVnfVirtualLinkId\" are mutually exclusive. Exactly one shall be present.\nNOTE 2:\tAn external CP instance is not associated to a link port in the cases indicated for the \n /"extLinkPorts/" attribute in clause 4.4.1.11.\nNOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network \n attachment definition resource is needed to fulfil the connectivity requirements of the external \n CP, e.g. to build a link redundant mated pair in SR-IOV cases.\nNOTE 4: When more than one netAttDefResourceId is indicated, all shall belong to the same namespace.\n", "type": "object", "required": [ "id", @@ -847,7 +847,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4. It shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the /"NetAttDefResourceInfo/" structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 3 and 4. It shall be present if the external CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -1493,7 +1493,7 @@ "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5 and 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes /"netAttDefResourceId/" and /"cpProtocolData/" for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -1707,7 +1707,7 @@ } }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the /"NetAttDefResourceData/" structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2334,7 +2334,7 @@ "type": "string" }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceInfoΓÇ¥ structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", + "description": "Identifier of the /"NetAttDefResourceInfo/" structure that provides the specification of the interface to attach the connection point to a secondary container cluster network. See notes 5 and 6. It shall be present if the internal CP is associated to a VNFC realized by one or a set of OS containers and is connected to a secondary container cluster network. It shall not be present otherwise.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", @@ -2652,7 +2652,7 @@ "description": "Information on the MCIO(s) representing VNFC instance(s) realized by one or a set of OS containers and created from the same VDU for the VNF instance.\n", "type": "array", "items": { - "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n ΓÇ£kindΓÇ¥ property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", + "description": "This type provides information about an MCIO representing the set of VNFC instances realized by one or a set of OS containers which have been created based on the same VDU. Within the CISM, an MCIO controller monitors the actual state of an MCIO representing the set of VNFC instances realized by one or a set of OS containers and compare it to the desired state. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to FALSE the desired state is specified in the respective declarative descriptor. For an MCIO related to a VDU that has the attribute \"isNumOfInstancesClusterBased\" set to TRUE, the desired state is determined by the number of CIS-nodes in the cluster that fulfil the VDU requirements. It triggers actions toward the CIS to align the actual to the desired state. Monitoring the actual state includes monitoring the number of MCIO instances available at any specific point in time. In addition, an MCIO controller maintains properties and runtime information on the MCIO instances which have been created based on the same VDU. The McioInfo data structure provides the runtime information on the MCIOs obtained from the MCIO controller.\nNOTE: There are different types of MCIOs. The set of VNFC instances based on the same VDU is represented \n by one MCIO, e.g. of type Deployment. Each individual VNFC instance is represented by another type \n of MCIO, e.g. a POD.\n\nRuntime information of the set of OS containers realizing an individual VNFC instance is not part of the McioInfo data structure; such runtime information is provided in the ResourceHandle data structure referenced from the VnfcResourceInfo. The McioInfo does not provide runtime information of a constituent VNFC instance created based on a specific VDU.\nNOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from \n the CISM. EXAMPLE: In case of MCIOs managed by Kubernetes┬«, the type of MCIO corresponds to the \n /"kind/" property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and \n desired state of the MCIO(s). \nNOTE 3: When the container infrastructure service is a Kubernetes┬« instance, the mcioId is the combined \n values from the kind and name fields of the Kubernetes resource object, separated by a slash. \n Example: \"Deployment/abcd\". \nNOTE 4: When the container infrastructure service is a Kubernetes┬« instance, the mcioName is the name \n field of the resource object. \n", "type": "object", "required": [ "mcioId", diff --git a/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOcc.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOcc.schema.json index 2ca32506..532af029 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOcc.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOcc.schema.json @@ -61,7 +61,7 @@ "type": "string" }, "operation": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation \n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the /"Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation \n", "type": "string", "enum": [ "INSTANTIATE", @@ -780,7 +780,7 @@ "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5 and 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes /"netAttDefResourceId/" and /"cpProtocolData/" for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -994,7 +994,7 @@ } }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the /"NetAttDefResourceData/" structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", diff --git a/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOccs.schema.json b/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOccs.schema.json index 4c35d74e..7ea9464c 100644 --- a/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOccs.schema.json +++ b/SOL002/VNFLifecycleManagement-API/schemas/vnfLcmOpOccs.schema.json @@ -63,7 +63,7 @@ "type": "string" }, "operation": { - "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the ΓÇ£Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation \n", + "description": "The enumeration LcmOpType defines the permitted values to represent VNF lifecycle operation types in VNF lifecycle management operation occurrence resources and VNF lifecycle management operation occurrence notifications.\nValue | Description ------|------------ INSTANTIATE | Represents the \"Instantiate VNF\" LCM operation. SCALE | Represents the \"Scale VNF\" LCM operation. SCALE_TO_LEVEL | Represents the \"Scale VNF to Level\" LCM operation. CHANGE_FLAVOUR | Represents the \"Change VNF Flavour\" LCM operation. TERMINATE | Represents the \"Terminate VNF\" LCM operation. HEAL | Represents the \"Heal VNF\" LCM operation. OPERATE | Represents the \"Operate VNF\" LCM operation. CHANGE_EXT_CONN | Represents the \"Change external VNF connectivity\" LCM operation. MODIFY_INFO | Represents the \"Modify VNF Information\" LCM operation. CREATE_SNAPSHOT | Represents the \"Create VNF Snapshot\" LCM operation. REVERT_TO_SNAPSHOT | Represents the /"Revert-To VNF Snapshot\" LCM operation. CHANGE_VNFPKG | Represents the \"Change current VNF package\" LCM operation. SELECT_DEPL_MODS | Represents the \"Select VNF deployable modules\" LCM operation \n", "type": "string", "enum": [ "INSTANTIATE", @@ -782,7 +782,7 @@ "description": "Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is of type \"IdentifierInVnf\" and is managed by the NFVO. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). See notes 2, 3, 4, 5 and 6.\n", "type": "object", "additionalProperties": { - "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes ΓÇ£netAttDefResourceIdΓÇ¥ and ΓÇ£cpProtocolDataΓÇ¥ for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", + "description": "This type represents an externally provided link port, or a network attachment definition resource of secondary container cluster network, or network address information per instance of an external connection point. In the case of VM-based deployment of the VNFC exposing the external CP:\n 1. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the\n external VL.\n 2. In case a link port is not provided, the VNFM shall create a link port on the external VL and use that link port\n to connect the external CP to the external VL.\nIn the case of container-based deployment of the VNFC exposing the external CP, the VNFM shall use the network attachment definition resource of secondary container cluster network when connecting the CP to the external VL.\n* NOTE 1: The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\" for an external CP\n instance connected or to be connected to a virtual network not categorized as secondary container cluster network:\n 1) Void.\n 2) At least one of the \"linkPortId\" and \"cpProtocolData\" attributes shall be present for an external CP instance\n representing a subport that is to be created, or an external CP instance that is to be created by creating the\n corresponding VNFC or VNF instance during the current or a subsequent LCM operation, or for an existing\n external CP instance that is to be re-configured or added to a particular external virtual link.\n 3) If the \"linkPortId\" attribute is absent, the VNFM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a\n precreated link port, and the VNFM can use means outside the scope of the present document to obtain the\n pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the NFVO shall ensure that the\n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n\n* NOTE 2: The following conditions apply to the attributes /"netAttDefResourceId/" and /"cpProtocolData/" for an external CP\n instance connected or to be connected to a secondary container cluster network:\n 1) Void.\n 2) The \"netAttDefResourceId\" attribute shall be present and the \"cpProtocolData\" attribute may be present for\n a to-be-created external CP instance or an existing external CP instance.\n* NOTE 3: Cardinality greater than 1 is only applicable for specific cases where more than one network attachment\n definition resource is needed to fulfil the connectivity requirements of the external CP, e.g. to build a link\n redundant mated pair in SR-IOV cases. When more than one netAttDefResourceId is indicated, all shall belong\n to the same namespace as defined by the corresponding \"containerNamespace\" attribute in the \"resourceHandle\" attribute\n in the \"NetAttDefResourceData\".\n* NOTE 4: Either linkPortId or netAttDefResourceId may be included, but not both.\n", "anyOf": [ { "required": [ @@ -996,7 +996,7 @@ } }, "netAttDefResourceId": { - "description": "Identifier of the ΓÇ£NetAttDefResourceDataΓÇ¥ structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", + "description": "Identifier of the /"NetAttDefResourceData/" structure that provides the specification of the interface to attach the external CP to a secondary container cluster network. It is only applicable if the external CP is connected or to be connected to a secondary container cluster network. It shall not be present if the external CP is related to a virtual network not categorized as secondary container cluster network. See notes 2, 3 and 4.\n", "type": "array", "items": { "description": "An identifier with the intention of being globally unique.\n", -- GitLab From 48c7ee09396c9dd6eef2edb9a7dc27a6c72d51f1 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 5 Dec 2024 16:58:14 +0500 Subject: [PATCH 23/37] update SOL 002 version in test cases description from 4.5.1 to 5.1.1 --- SOL002/VNFFaultManagement-API/Alarms.robot | 42 ++++++++--------- .../EscalatePerceivedSeverityTask.robot | 14 +++--- .../IndividualAlarm.robot | 20 ++++---- .../IndividualSubscription.robot | 16 +++---- .../NotificationEndpoint.robot | 6 +-- .../Notifications.robot | 6 +-- .../Subscriptions.robot | 46 +++++++++---------- 7 files changed, 75 insertions(+), 75 deletions(-) diff --git a/SOL002/VNFFaultManagement-API/Alarms.robot b/SOL002/VNFFaultManagement-API/Alarms.robot index 06c9fc69..a1654b64 100644 --- a/SOL002/VNFFaultManagement-API/Alarms.robot +++ b/SOL002/VNFFaultManagement-API/Alarms.robot @@ -14,7 +14,7 @@ POST Alarms - Method not implemented ... Test title: POST Alarms - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ GET information about multiple alarms ... Test title: GET information about multiple alarms ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ GET information about multiple alarms with attribute-based filter ... Test title: GET information about multiple alarms with attribute-based filter ... Test objective: The objective is to retrieve information about the alarm list with attribute-based filter ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -52,7 +52,7 @@ GET information about multiple alarms with invalid attribute-based filter ... Test title: GET information about multiple alarms with invalid attribute-based filter ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -65,7 +65,7 @@ GET information about multiple alarms with "all_fields" attribute selector ... Test title: GET information about multiple alarms with "all_fields" attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -78,7 +78,7 @@ GET information about multiple alarms with exclude_default attribute selector ... Test title: GET information about multiple alarms with "exclude_default" attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -91,7 +91,7 @@ GET information about multiple alarms with fields attribute selector ... Test title: GET information about multiple alarms with fields attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -104,7 +104,7 @@ GET information about multiple alarms with "exclude_fields" attribute selector ... Test title: GET information about multiple alarms with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve information about the alarm list ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -117,7 +117,7 @@ PUT Alarms - Method not implemented ... Test title: PUT Alarms - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -129,7 +129,7 @@ PATCH Alarms - Method not implemented ... Test title: PATCH Alarms - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -141,7 +141,7 @@ DELETE Alarms - Method not implemented ... Test title: DELETE Alarms - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -153,7 +153,7 @@ GET information about multiple alarms to get Paged Response ... Test title: GET information about multiple alarms to get Paged Response ... Test objective: The objective is to retrieve information about the alarms to get paged response ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -166,7 +166,7 @@ GET information about multiple alarms for Bad Request Response too big ... Test title: GET information about multiple alarms for Bad Request Response too big ... Test objective: The objective is to test that GET method fail retrieving status information about Alarms when Response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -179,7 +179,7 @@ GET information about alarms with attribute-based filter "id" ... Test title: GET information about alarms with attribute-based filter "id" ... Test objective: The objective is to retrieve information about the alarm list with alarm filter "id" ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -193,7 +193,7 @@ GET information about multiple alarms with attribute-based filter "vnfcInstanceI ... Test title: GET information about multiple alarms with attribute-based filter "vnfcInstanceIds" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "vnfcInstanceIds" ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -207,7 +207,7 @@ GET information about multiple alarms with attribute-based filter "rootCauseFaul ... Test title: GET information about multiple alarms with attribute-based filter "rootCauseFaultyResource.faultyResourceType" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "rootCauseFaultyResource.faultyResourceType" ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -221,7 +221,7 @@ GET information about multiple alarms with attribute-based filter "eventType" ... Test title: GET information about multiple alarms with attribute-based filter "eventType" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "eventType" ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -235,7 +235,7 @@ GET information about multiple alarms with attribute-based filter "perceivedSeve ... Test title: GET information about multiple alarms with attribute-based filter "perceivedSeverity" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "perceivedSeverity" ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -249,7 +249,7 @@ GET information about multiple alarms with attribute-based filter "probableCause ... Test title: GET information about multiple alarms with attribute-based filter "probableCause" ... Test objective: The objective is to retrieve information about the alarm list with attribute filter "probableCause" ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -262,7 +262,7 @@ GET information about multiple alarms with permitted authorization scope ... Test title: GET information about multiple alarms with permitted authorization scope ... Test objective: The objective is to retrieve information about the alarm list with permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -274,7 +274,7 @@ GET information about multiple alarms with not permitted authorization scope ... Test title: GET information about multiple alarms with not permitted authorization scope ... Test objective: The objective is to retrieve information about the alarm list with not permitted authorization scope ... Pre-conditions: none - ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFFaultManagement-API/EscalatePerceivedSeverityTask.robot b/SOL002/VNFFaultManagement-API/EscalatePerceivedSeverityTask.robot index b9f1023c..caed1031 100644 --- a/SOL002/VNFFaultManagement-API/EscalatePerceivedSeverityTask.robot +++ b/SOL002/VNFFaultManagement-API/EscalatePerceivedSeverityTask.robot @@ -13,7 +13,7 @@ Escalate the perceived severity ... Test title: Escalate the perceived severity ... Test objective: To enable the consumer to escalate the perceived severity of an alarm that is represented by an individual alarm resource. ... Pre-conditions: The resource representing the individual alarm has been created - ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ GET Escalate the perceived severity - Method not implemented ... Test title: GET Escalate the perceived severity - Method not implemented ... Test objective: The objective is to test that the GET HTTP method not implemented for escalate perceived severity ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ PUT Escalate the perceived severity - Method not implemented ... Test title: PUT Escalate the perceived severity - Method not implemented ... Test objective: The objective is to test that the PUT HTTP method not implemented for escalate perceived severity ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -49,7 +49,7 @@ PATCH Escalate the perceived severity - Method not implemented ... Test title: PATCH Escalate the perceived severity - Method not implemented ... Test objective: The objective is to test that the PATCH HTTP method not implemented for escalate perceived severity ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -61,7 +61,7 @@ DELETE Escalate the perceived severity - Method not implemented ... Test title: DELETE Escalate the perceived severity - Method not implemented ... Test objective: The objective is to test that the DELETE HTTP method not implemented for escalate perceived severity ... Pre-conditions: none - ... Reference: Clause 7.4.4.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.4.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -72,7 +72,7 @@ Escalate the perceived severity with permitted authorization scope ... Test title: Escalate the perceived severity with permitted authorization scope ... Test objective: To enable the consumer to escalate the perceived severity of an alarm that is represented by an individual alarm resource with permitted authorization scope. ... Pre-conditions: The resource representing the individual alarm has been created - ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -83,7 +83,7 @@ Escalate the perceived severity with NOT permitted authorization scope ... Test title: Escalate the perceived severity with NOT permitted authorization scope ... Test objective: To enable the consumer to escalate the perceived severity of an alarm that is represented by an individual alarm resource with NOT permitted authorization scope. ... Pre-conditions: The resource representing the individual alarm has been created - ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFFaultManagement-API/IndividualAlarm.robot b/SOL002/VNFFaultManagement-API/IndividualAlarm.robot index 4ba0b4b5..79f9e66f 100644 --- a/SOL002/VNFFaultManagement-API/IndividualAlarm.robot +++ b/SOL002/VNFFaultManagement-API/IndividualAlarm.robot @@ -16,7 +16,7 @@ POST Alarm - Method not implemented ... Test title: POST Alarm - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ GET information about an individual alarm ... Test title: GET information about an individual alarm ... Test objective: The objective is to read an individual alarm. ... Pre-conditions: The related alarm exists - ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ PUT Individual Alarm - Method not implemented ... Test title: PUT Individual Alarm - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ PATCH Individual Alarm ... Test title: PATCH Individual Alarm ... Test objective: The objective is to Modify an individual alarm resource ... Pre-conditions: The related alarm exists - ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ PATCH Individual Alarm - Precondition failed ... Test title: PATCH Individual Alarm - Precondition failed ... Test objective: The objective is to attempt to Modify an individual alarm resource, where the precondition was not met ... Pre-conditions: The related alarm exists - ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The alarm resource is not modified @@ -82,7 +82,7 @@ PATCH Individual Alarm - Conflict ... Test title: PATCH Individual Alarm - Conflict ... Test objective: The objective is to Modify an individual alarm resource ... Pre-conditions: The related alarm exists - ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The alarm resource is not modified @@ -96,7 +96,7 @@ DELETE Individual Alarm - Method not implemented ... Test title: DELETE Individual Alarm - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -108,7 +108,7 @@ GET information about an individual alarm - Not Found ... Test title: GET information about an individual alarm - Not Found ... Test objective: The objective is to test that GET method fail retrieving status information about individaual Alarms when alarm is not present. ... Pre-conditions: The related alarm doesnot exists - ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -120,7 +120,7 @@ PATCH Individual Alarm with permitted authorization scope ... Test title: PATCH Individual Alarm with permitted authorization scope ... Test objective: The objective is to Modify an individual alarm resource with permitted authorization scope ... Pre-conditions: The related alarm exists - ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -133,7 +133,7 @@ PATCH Individual Alarm with NOT permitted authorization scope ... Test title: PATCH Individual Alarm with NOT permitted authorization scope ... Test objective: The objective is to Modify an individual alarm resource with NOT permitted authorization scope ... Pre-conditions: The related alarm exists - ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFFaultManagement-API/IndividualSubscription.robot b/SOL002/VNFFaultManagement-API/IndividualSubscription.robot index 9778058a..f5186f14 100644 --- a/SOL002/VNFFaultManagement-API/IndividualSubscription.robot +++ b/SOL002/VNFFaultManagement-API/IndividualSubscription.robot @@ -14,7 +14,7 @@ POST Individual Subscription - Method not implemented ... Test title: POST Individual Subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ GET Information about an individual subscription ... Test title: GET Information about an individual subscription ... Test objective: The objective is to read an individual subscription for VNF alarms subscribed by the client ... Pre-conditions: The subscription with the given id exists - ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -39,7 +39,7 @@ PUT an individual subscription - Method not implemented ... Test title: PUT an individual subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -51,7 +51,7 @@ PATCH an individual subscription - Method not implemented ... Test title: PATCH an individual subscription - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -63,7 +63,7 @@ DELETE an individual subscription ... Test title: DELETE an individual subscription ... Test objective: The objective is to test that the deletion of a individual subscription resource. ... Pre-conditions: one or more subscription already exsist - ... Reference: Clause 7.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: the subscription is deleted @@ -76,7 +76,7 @@ GET Information about an individual subscription - Not Found ... Test title: GET Information about an individual subscription - Not Found ... Test objective: The objective is to test that GET method fail retrieving individual subscription for VNF alarms subscribed by the client because it is not present. ... Pre-conditions: The subscription with the given id donot exists - ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -88,7 +88,7 @@ GET Information about an individual subscription with permitted authorization sc ... Test title: GET Information about an individual subscription with permitted authorization scope ... Test objective: The objective is to read an individual subscription for VNF alarms subscribed by the client with the permitted authorization scope ... Pre-conditions: The subscription with the given id exists - ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -100,7 +100,7 @@ GET Information about an individual subscription with NOT permitted authorizatio ... Test title: GET Information about an individual subscription with NOT permitted authorization scope ... Test objective: The objective is to read an individual subscription for VNF alarms subscribed by the client with not permitted authorization scope ... Pre-conditions: The subscription with the given id exists - ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFFaultManagement-API/NotificationEndpoint.robot b/SOL002/VNFFaultManagement-API/NotificationEndpoint.robot index 59915594..00313277 100644 --- a/SOL002/VNFFaultManagement-API/NotificationEndpoint.robot +++ b/SOL002/VNFFaultManagement-API/NotificationEndpoint.robot @@ -13,7 +13,7 @@ VNF Fault Alarm Notification ... Test title: VNF Fault Alarm Notification ... Test objective: The objective is to test that VNF Fault Alarm Notification is delivered with success to the notification consumer ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm notifications is available in the VNFM. - ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ VNF Fault Alarm Cleared Notification ... Test title: VNF Fault Alarm Cleared Notification ... Test objective: The objective is to test that VNF Fault Alarm Cleared Notification is delivered with success to the notification consumer ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm cleared notifications is available in the VNFM. - ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ VNF Fault Alarm List Rebuilt Notification ... Test title: VNF Fault List Rebuilt Alarm List Rebuilt Notification ... Test objective: The objective is to test that VNF Fault Alarm List Rebuilt Notification is delivered with success to the notification consumer ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm list rebuilt notifications is available in the VNFM. - ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFFaultManagement-API/Notifications.robot b/SOL002/VNFFaultManagement-API/Notifications.robot index 662466ee..18600c3c 100644 --- a/SOL002/VNFFaultManagement-API/Notifications.robot +++ b/SOL002/VNFFaultManagement-API/Notifications.robot @@ -15,7 +15,7 @@ VNF Fault Alarm Notification ... Test title: VNF Fault Alarm Notification ... Test objective: The objective is to test the dispatch of VNF Fault Alarm Notification when a virtualised resource within an VNF instance fails, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF instance is instantiated, and a subscription for fault alarm notifications is available in the VNFM. - ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ VNF Fault Alarm Cleared Notification ... Test title: VNF Fault Alarm Cleared Notification ... Test objective: The objective is to test the dispatch of VNF Fault Alarm Cleared Notification when a faulty virtualised resource within an VNF instance is cleared, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF instance is instantiated, a virtualised resource is in faulty state, and a subscription for fault alarm cleared notifications is available in the VNFM. - ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ VNF Fault Alarm List Rebuilt Notification ... Test title: VNF Fault Alarm List Rebuilt Notification ... Test objective: The objective is to test the dispatch of VNF Fault Alarm List Rebuilt Notification when the VNFM decides to rebuild the list of its VNF alarms, e.g. due to a corruption in the alarm storage, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF instance is instantiated, one or more virtualised resource are in faulty state, and a subscription for fault alarm list rebuilt notifications is available in the VNFM. - ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.7.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFFaultManagement-API/Subscriptions.robot b/SOL002/VNFFaultManagement-API/Subscriptions.robot index ee078294..177f6a0c 100644 --- a/SOL002/VNFFaultManagement-API/Subscriptions.robot +++ b/SOL002/VNFFaultManagement-API/Subscriptions.robot @@ -17,7 +17,7 @@ Create a new subscription ... Test title: Create a new subscription ... Test objective: The objective is to create a new subscription. ... Pre-conditions: no subscription with the same filter and callbackUri exists - ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: Resource created successfully @@ -32,7 +32,7 @@ Create a duplicated Subscription ... Test title: Create a duplicated Subscription ... Test objective: The objective is to create a duplicate subscription. ... Pre-conditions: subscription with the same filter and callbackUri exists - ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: ... Post-Conditions: duplicated subscription is created if the IUT allows duplications, otherwise the duplicated subscription is not created @@ -55,7 +55,7 @@ GET Subscriptions ... Test title: GET Subscriptions ... Test objective: The objective is to retrieve the list of active subscriptions ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ GET Subscription - Filter ... Test title: GET Subscription - Filter ... Test objective: The objective is to retrieve the list of active subscriptions with filter ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -81,7 +81,7 @@ GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test title: GET subscriptions - Bad Request Invalid attribute-based filtering parameters ... Test objective: The objective is to retrieve the list of active subscriptions with Invalid attribute-based filtering parameters ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -94,7 +94,7 @@ GET subscriptions with "all_fields" attribute selector ... Test title: GET subscriptions with "all_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -107,7 +107,7 @@ GET subscriptions with "exclude_default" attribute selector ... Test title: GET subscriptions with "exclude_default" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -120,7 +120,7 @@ GET subscriptions with "fields" attribute selector ... Test title: GET subscriptions with "fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -133,7 +133,7 @@ GET subscriptions with "exclude_fields" attribute selector ... Test title: GET subscriptions with "exclude_fields" attribute selector ... Test objective: The objective is to retrieve the list of active subscriptions with attribute selector ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -146,7 +146,7 @@ PUT subscriptions - Method not implemented ... Test title: PUT subscriptions - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -158,7 +158,7 @@ PATCH subscriptions - Method not implemented ... Test title: PUT subscriptions - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -170,7 +170,7 @@ DELETE subscriptions - Method not implemented ... Test title: DELETE subscriptions - Method not implemented ... Test objective: The objective is to test that the method is not implemented ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -182,7 +182,7 @@ GET Subscriptions to get Paged Response ... Test title: GET Subscriptions to get Paged Response ... Test objective: The objective is to retrieve the list of active subscriptions to get paged response ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -195,7 +195,7 @@ GET subscriptions - Bad Request Response too Big ... Test title: GET subscriptions - Bad Request Response too Big ... Test objective: The objective is to test that GET method fail retrieving list of active subscription because Response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -208,7 +208,7 @@ GET Subscription with attribute-based filter "id" ... Test title: GET Subscription with attribute-based filter "id" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "id" ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -222,7 +222,7 @@ Get subscriptions with filter "filter.notificationTypes" ... Test title: GET Subscription with attribute-based filter "filter.notificationTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.notificationTypes" ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -236,7 +236,7 @@ Get subscriptions with filter "filter.faultyResourceTypes" ... Test title: GET Subscription with attribute-based filter "filter.faultyResourceTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.faultyResourceTypes" ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -250,7 +250,7 @@ Get subscriptions with filter "filter.perceivedSeverities" ... Test title: GET Subscription with attribute-based filter "filter.perceivedSeverities" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.perceivedSeverities" ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -264,7 +264,7 @@ Get subscriptions with filter "filter.eventTypes" ... Test title: GET Subscription with attribute-based filter "filter.eventTypes" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.eventTypes" ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -278,7 +278,7 @@ Get subscriptions with filter "filter.probableCauses" ... Test title: GET Subscription with attribute-based filter "filter.probableCauses" ... Test objective: The objective is to retrieve the list of active subscriptions with filter "filter.probableCauses" ... Pre-conditions: none - ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -292,7 +292,7 @@ POST Create a new Subscription - Unprocessable Content ... Test title: POST Create a new Subscription - Unprocessable Content ... Test objective: The objective is to test that content type of the message content is supported and the message content of a request contains syntactically correct data but the data cannot be processed. ... re-conditions: none - ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -304,7 +304,7 @@ Create a new subscription with permitted authorization scope ... Test title: Create a new subscription with permitted authorization scope ... Test objective: The objective is to create a new subscription with permitted authorization scope. ... Pre-conditions: no subscription with the same filter and callbackUri exists - ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: Resource created successfully @@ -318,7 +318,7 @@ Create a new subscription with not permitted authorization scope ... Test title: Create a new subscription with not permitted authorization scope ... Test objective: The objective is to create a new subscription with not permitted authorization scope. ... Pre-conditions: no subscription with the same filter and callbackUri exists - ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 7.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: Resource created successfully -- GitLab From 03ba47c0e3fbc456326d2a4e2ac52f679a002ef6 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 6 Dec 2024 10:46:43 +0500 Subject: [PATCH 24/37] update test cases of VNFFaultManagement-API as per SOL 002 version 5.1.1 --- .../schemas/FmSubscription.schema.json | 49 ++++++++++++++++++- .../schemas/FmSubscriptions.schema.json | 49 ++++++++++++++++++- .../schemas/alarm.schema.json | 6 +-- .../schemas/alarmNotification.schema.json | 6 +-- .../schemas/alarms.schema.json | 6 +-- 5 files changed, 105 insertions(+), 11 deletions(-) diff --git a/SOL002/VNFFaultManagement-API/schemas/FmSubscription.schema.json b/SOL002/VNFFaultManagement-API/schemas/FmSubscription.schema.json index e6fc6b8a..612f69cc 100644 --- a/SOL002/VNFFaultManagement-API/schemas/FmSubscription.schema.json +++ b/SOL002/VNFFaultManagement-API/schemas/FmSubscription.schema.json @@ -23,7 +23,7 @@ "oneOf": [ { "required": [ - "vnfdId" + "vnfdIds" ] }, { @@ -199,6 +199,53 @@ "description": "String formatted according to IETF RFC 3986.\n", "type": "string" }, + "pmJobConnection": { + "description": "An access information and interface information to monitor the FM of VNF instance by the VNFM. This can include for instance certain interface endpoint URI together with necessary credentials to access it.\n", + "type": "array", + "items": { + "description": "The MonitoringConnection shall follow the indications. * NOTE:\tThe VNFM can be made aware of monitoring connection information, including their identifiers to \n be used by configuration means outside the scope of the present document (e.g. using relevant NFV-MANO management \n APIs as defined in ETSI GS NFV-SOL 009). \n", + "type": "object", + "required": [ + "id", + "monitoringType" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "monitoringType": { + "description": "Type of monitoring way. VALUES: \n ΓÇó\tVIM_CISM\n ΓÇó\tEXTERNAL\n ΓÇó\tPAAS\n", + "type": "string", + "enum": [ + "VIM_CISM", + "EXTERNAL", + "PAAS" + ] + }, + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "paasServiceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + } + } + } + }, "_links": { "description": "Links for this resource.\n", "type": "object", diff --git a/SOL002/VNFFaultManagement-API/schemas/FmSubscriptions.schema.json b/SOL002/VNFFaultManagement-API/schemas/FmSubscriptions.schema.json index d61b2a28..e0530780 100644 --- a/SOL002/VNFFaultManagement-API/schemas/FmSubscriptions.schema.json +++ b/SOL002/VNFFaultManagement-API/schemas/FmSubscriptions.schema.json @@ -25,7 +25,7 @@ "oneOf": [ { "required": [ - "vnfdId" + "vnfdIds" ] }, { @@ -201,6 +201,53 @@ "description": "String formatted according to IETF RFC 3986.\n", "type": "string" }, + "pmJobConnection": { + "description": "An access information and interface information to monitor the FM of VNF instance by the VNFM. This can include for instance certain interface endpoint URI together with necessary credentials to access it.\n", + "type": "array", + "items": { + "description": "The MonitoringConnection shall follow the indications. * NOTE:\tThe VNFM can be made aware of monitoring connection information, including their identifiers to \n be used by configuration means outside the scope of the present document (e.g. using relevant NFV-MANO management \n APIs as defined in ETSI GS NFV-SOL 009). \n", + "type": "object", + "required": [ + "id", + "monitoringType" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "monitoringType": { + "description": "Type of monitoring way. VALUES: \n ΓÇó\tVIM_CISM\n ΓÇó\tEXTERNAL\n ΓÇó\tPAAS\n", + "type": "string", + "enum": [ + "VIM_CISM", + "EXTERNAL", + "PAAS" + ] + }, + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "paasServiceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + } + } + } + }, "_links": { "description": "Links for this resource.\n", "type": "object", diff --git a/SOL002/VNFFaultManagement-API/schemas/alarm.schema.json b/SOL002/VNFFaultManagement-API/schemas/alarm.schema.json index 44aea28b..970c70e6 100644 --- a/SOL002/VNFFaultManagement-API/schemas/alarm.schema.json +++ b/SOL002/VNFFaultManagement-API/schemas/alarm.schema.json @@ -153,11 +153,11 @@ ] }, "faultType": { - "description": "Additional information to clarify the type of the fault. If the alarm is related to changes in the state of virtualised resources due to NFVI operation and maintenance, this attribute shall be set to \"NFVI_OAM_VIRTUALISED_RESOURCE_STATE _CHANGE\".\n", + "description": "Additional information to clarify the type of the fault. Valid values applicable to specific Alarms are specified as \"Alarm definition identifier\" values of the Alarm applicable to Ve-Vnfm reference point. If the alarm is related to changes in the state of virtualised resources due to NFVI operation and maintenance, this attribute shall be set to \"NFVI_OAM_VIRTUALISED_RESOURCE_STATE _CHANGE\".\n", "type": "string" }, "probableCause": { - "description": "Information about the probable cause of the fault. If the attribute \"faultType\" has the value ΓÇ£NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGEΓÇ¥, the permitted values are: \n - \"NFVI_COMPONENT_MAINTENANCE\": Maintenance of NFVI components, e.g. physical maintenance/repair, \n hypervisor software updates, etc.\n - \"NFVI_COMPONENT_EVACUATION\": Evacuation of physical hosts.\n - \"NFVI_COMPONENT_OPTIMIZATION\": Operation and management of NFVI resources, e.g. to support energy\n efficiency or resource usage optimization.\n", + "description": "Information about the probable cause of the fault. Valid values applicable to specific Alarms are specified as \"Probable cause\" values of the Alarm applicable to Ve-Vnfm reference point. If the attribute \"faultType\" has the value ΓÇ£NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGEΓÇ¥, the permitted values are: \n - \"NFVI_COMPONENT_MAINTENANCE\": Maintenance of NFVI components, e.g. physical maintenance/repair, \n hypervisor software updates, etc.\n - \"NFVI_COMPONENT_EVACUATION\": Evacuation of physical hosts.\n - \"NFVI_COMPONENT_OPTIMIZATION\": Operation and management of NFVI resources, e.g. to support energy\n efficiency or resource usage optimization.\n", "type": "string" }, "isRootCause": { @@ -173,7 +173,7 @@ } }, "faultDetails": { - "description": "Provides additional information about the fault. See notes 1 and 2.\n", + "description": "Provides additional information about the fault. See notes 1 and 2. Valid values applicable to specific Alarms are specified as \"Fault details\" values of the Alarm applicable to Ve-Vnfm reference point.\n", "type": "array", "items": { "type": "string" diff --git a/SOL002/VNFFaultManagement-API/schemas/alarmNotification.schema.json b/SOL002/VNFFaultManagement-API/schemas/alarmNotification.schema.json index aba8ecf6..986ced11 100644 --- a/SOL002/VNFFaultManagement-API/schemas/alarmNotification.schema.json +++ b/SOL002/VNFFaultManagement-API/schemas/alarmNotification.schema.json @@ -185,11 +185,11 @@ ] }, "faultType": { - "description": "Additional information to clarify the type of the fault. If the alarm is related to changes in the state of virtualised resources due to NFVI operation and maintenance, this attribute shall be set to \"NFVI_OAM_VIRTUALISED_RESOURCE_STATE _CHANGE\".\n", + "description": "Additional information to clarify the type of the fault. Valid values applicable to specific Alarms are specified as \"Alarm definition identifier\" values of the Alarm applicable to Ve-Vnfm reference point. If the alarm is related to changes in the state of virtualised resources due to NFVI operation and maintenance, this attribute shall be set to \"NFVI_OAM_VIRTUALISED_RESOURCE_STATE _CHANGE\".\n", "type": "string" }, "probableCause": { - "description": "Information about the probable cause of the fault. If the attribute \"faultType\" has the value ΓÇ£NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGEΓÇ¥, the permitted values are: \n - \"NFVI_COMPONENT_MAINTENANCE\": Maintenance of NFVI components, e.g. physical maintenance/repair, \n hypervisor software updates, etc.\n - \"NFVI_COMPONENT_EVACUATION\": Evacuation of physical hosts.\n - \"NFVI_COMPONENT_OPTIMIZATION\": Operation and management of NFVI resources, e.g. to support energy\n efficiency or resource usage optimization.\n", + "description": "Information about the probable cause of the fault. Valid values applicable to specific Alarms are specified as \"Probable cause\" values of the Alarm applicable to Ve-Vnfm reference point. If the attribute \"faultType\" has the value ΓÇ£NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGEΓÇ¥, the permitted values are: \n - \"NFVI_COMPONENT_MAINTENANCE\": Maintenance of NFVI components, e.g. physical maintenance/repair, \n hypervisor software updates, etc.\n - \"NFVI_COMPONENT_EVACUATION\": Evacuation of physical hosts.\n - \"NFVI_COMPONENT_OPTIMIZATION\": Operation and management of NFVI resources, e.g. to support energy\n efficiency or resource usage optimization.\n", "type": "string" }, "isRootCause": { @@ -205,7 +205,7 @@ } }, "faultDetails": { - "description": "Provides additional information about the fault. See notes 1 and 2.\n", + "description": "Provides additional information about the fault. See notes 1 and 2. Valid values applicable to specific Alarms are specified as \"Fault details\" values of the Alarm applicable to Ve-Vnfm reference point.\n", "type": "array", "items": { "type": "string" diff --git a/SOL002/VNFFaultManagement-API/schemas/alarms.schema.json b/SOL002/VNFFaultManagement-API/schemas/alarms.schema.json index 632fefd6..74582f4b 100644 --- a/SOL002/VNFFaultManagement-API/schemas/alarms.schema.json +++ b/SOL002/VNFFaultManagement-API/schemas/alarms.schema.json @@ -155,11 +155,11 @@ ] }, "faultType": { - "description": "Additional information to clarify the type of the fault. If the alarm is related to changes in the state of virtualised resources due to NFVI operation and maintenance, this attribute shall be set to \"NFVI_OAM_VIRTUALISED_RESOURCE_STATE _CHANGE\".\n", + "description": "Additional information to clarify the type of the fault. Valid values applicable to specific Alarms are specified as \"Alarm definition identifier\" values of the Alarm applicable to Ve-Vnfm reference point. If the alarm is related to changes in the state of virtualised resources due to NFVI operation and maintenance, this attribute shall be set to \"NFVI_OAM_VIRTUALISED_RESOURCE_STATE _CHANGE\".\n", "type": "string" }, "probableCause": { - "description": "Information about the probable cause of the fault. If the attribute \"faultType\" has the value ΓÇ£NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGEΓÇ¥, the permitted values are: \n - \"NFVI_COMPONENT_MAINTENANCE\": Maintenance of NFVI components, e.g. physical maintenance/repair, \n hypervisor software updates, etc.\n - \"NFVI_COMPONENT_EVACUATION\": Evacuation of physical hosts.\n - \"NFVI_COMPONENT_OPTIMIZATION\": Operation and management of NFVI resources, e.g. to support energy\n efficiency or resource usage optimization.\n", + "description": "Information about the probable cause of the fault. Valid values applicable to specific Alarms are specified as \"Probable cause\" values of the Alarm applicable to Ve-Vnfm reference point. If the attribute \"faultType\" has the value ΓÇ£NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGEΓÇ¥, the permitted values are: \n - \"NFVI_COMPONENT_MAINTENANCE\": Maintenance of NFVI components, e.g. physical maintenance/repair, \n hypervisor software updates, etc.\n - \"NFVI_COMPONENT_EVACUATION\": Evacuation of physical hosts.\n - \"NFVI_COMPONENT_OPTIMIZATION\": Operation and management of NFVI resources, e.g. to support energy\n efficiency or resource usage optimization.\n", "type": "string" }, "isRootCause": { @@ -175,7 +175,7 @@ } }, "faultDetails": { - "description": "Provides additional information about the fault. See notes 1 and 2.\n", + "description": "Provides additional information about the fault. See notes 1 and 2. Valid values applicable to specific Alarms are specified as \"Fault details\" values of the Alarm applicable to Ve-Vnfm reference point.\n", "type": "array", "items": { "type": "string" -- GitLab From 1cf67d239bd84ae641d149097936470de47eccea Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 6 Dec 2024 10:50:56 +0500 Subject: [PATCH 25/37] editorial change: Reformatted schemas --- .../schemas/ApiVersionInformation.schema.json | 64 +++++++++---------- .../schemas/FmSubscriptions.schema.json | 2 +- 2 files changed, 33 insertions(+), 33 deletions(-) diff --git a/SOL002/VNFFaultManagement-API/schemas/ApiVersionInformation.schema.json b/SOL002/VNFFaultManagement-API/schemas/ApiVersionInformation.schema.json index a7964119..b3582ea4 100644 --- a/SOL002/VNFFaultManagement-API/schemas/ApiVersionInformation.schema.json +++ b/SOL002/VNFFaultManagement-API/schemas/ApiVersionInformation.schema.json @@ -1,36 +1,36 @@ { - "description": "This type represents API version information.\n", - "type": "object", - "required": [ - "uriPrefix", - "apiVersions" - ], - "properties": { - "uriPrefix": { - "description": "Specifies the URI prefix for the API, in the following form {apiRoot}/{apiName}/{apiMajorVersion}/.\n", - "type": "string" - }, - "apiVersions": { - "description": "Version(s) supported for the API signaled by the uriPrefix attribute.\n", - "type": "array", - "items": { - "type": "object", - "required": [ - "version" - ], - "properties": { - "version": { - "description": "Identifies a supported version. The value of the version attribute shall be a version identifier as specified in clause 9.1 (SOL013).\n", - "type": "string" - }, - "isDeprecated": { - "description": "If such information is available, this attribute indicates whether use of the version signaled by the version attribute is deprecated (true) or not (false).\nA deprecated version is still supported by the API producer but is recommended not to be used any longer. When a version is no longer supported, it does not appear in the response body.\n", - "type": "boolean" - }, - "retirementDate": { - "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", - "type": "string", - "format": "date-time" + "description": "This type represents API version information.\n", + "type": "object", + "required": [ + "uriPrefix", + "apiVersions" + ], + "properties": { + "uriPrefix": { + "description": "Specifies the URI prefix for the API, in the following form {apiRoot}/{apiName}/{apiMajorVersion}/.\n", + "type": "string" + }, + "apiVersions": { + "description": "Version(s) supported for the API signaled by the uriPrefix attribute.\n", + "type": "array", + "items": { + "type": "object", + "required": [ + "version" + ], + "properties": { + "version": { + "description": "Identifies a supported version. The value of the version attribute shall be a version identifier as specified in clause 9.1 (SOL013).\n", + "type": "string" + }, + "isDeprecated": { + "description": "If such information is available, this attribute indicates whether use of the version signaled by the version attribute is deprecated (true) or not (false).\nA deprecated version is still supported by the API producer but is recommended not to be used any longer. When a version is no longer supported, it does not appear in the response body.\n", + "type": "boolean" + }, + "retirementDate": { + "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n", + "type": "string", + "format": "date-time" } } } diff --git a/SOL002/VNFFaultManagement-API/schemas/FmSubscriptions.schema.json b/SOL002/VNFFaultManagement-API/schemas/FmSubscriptions.schema.json index e0530780..2381b8cb 100644 --- a/SOL002/VNFFaultManagement-API/schemas/FmSubscriptions.schema.json +++ b/SOL002/VNFFaultManagement-API/schemas/FmSubscriptions.schema.json @@ -1,6 +1,6 @@ { "type": "array", - "items": { + "items": { "description": "This type represents a subscription related to notifications about VNF faults.\n", "type": "object", "required": [ -- GitLab From 9edc284e6ce8c1ba359c3e120c701258f5f20a73 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 6 Dec 2024 16:00:14 +0500 Subject: [PATCH 26/37] add header check for Location as per SOL002 specifications --- SOL002/VNFFaultManagement-API/Subscriptions.robot | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/SOL002/VNFFaultManagement-API/Subscriptions.robot b/SOL002/VNFFaultManagement-API/Subscriptions.robot index 177f6a0c..a51cd1cf 100644 --- a/SOL002/VNFFaultManagement-API/Subscriptions.robot +++ b/SOL002/VNFFaultManagement-API/Subscriptions.robot @@ -23,6 +23,7 @@ Create a new subscription ... Post-Conditions: Resource created successfully Post Create subscription Check HTTP Response Status Code Is 201 + Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is FmSubscription Check HTTP Response Header Contain Link Check Postcondition resource exists @@ -611,4 +612,9 @@ Post Create subscription with not permitted authorization scope Post ${apiRoot}/${apiName}/${apiMajorVersion}/subscriptions ${body} allow_redirects=false ${output}= Output response Set Global Variable ${response} ${output} - Clear Requests ${callback_endpoint} \ No newline at end of file + Clear Requests ${callback_endpoint} +Check HTTP Response Header Contains + [Arguments] ${CONTENT_TYPE} + Log ${response['headers']} + Should Contain ${response['headers']} ${CONTENT_TYPE} + Log Header is present \ No newline at end of file -- GitLab From e63cd3f42087a6498341674997d627295db331b6 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Tue, 17 Dec 2024 10:24:27 +0500 Subject: [PATCH 27/37] editorial change: attribute name correction as per SOL 002 version 5.1.1 --- .../VNFFaultManagement-API/schemas/FmSubscription.schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SOL002/VNFFaultManagement-API/schemas/FmSubscription.schema.json b/SOL002/VNFFaultManagement-API/schemas/FmSubscription.schema.json index 612f69cc..a911edc7 100644 --- a/SOL002/VNFFaultManagement-API/schemas/FmSubscription.schema.json +++ b/SOL002/VNFFaultManagement-API/schemas/FmSubscription.schema.json @@ -199,7 +199,7 @@ "description": "String formatted according to IETF RFC 3986.\n", "type": "string" }, - "pmJobConnection": { + "fmConnection": { "description": "An access information and interface information to monitor the FM of VNF instance by the VNFM. This can include for instance certain interface endpoint URI together with necessary credentials to access it.\n", "type": "array", "items": { -- GitLab From 6b0018babe6fe43b75c5ec2189af31e5301a5ae0 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Tue, 17 Dec 2024 11:41:08 +0500 Subject: [PATCH 28/37] test different methods of notification endpoint of VNF LCM as per SOL 002 specification version 5.1.1 --- .../NotificationEndpoint.robot | 79 ++++++++++++++++++- .../environment/variables.txt | 2 +- 2 files changed, 79 insertions(+), 2 deletions(-) diff --git a/SOL002/VNFFaultManagement-API/NotificationEndpoint.robot b/SOL002/VNFFaultManagement-API/NotificationEndpoint.robot index 00313277..bda11454 100644 --- a/SOL002/VNFFaultManagement-API/NotificationEndpoint.robot +++ b/SOL002/VNFFaultManagement-API/NotificationEndpoint.robot @@ -43,6 +43,50 @@ VNF Fault Alarm List Rebuilt Notification ... Post-Conditions: none Post Alarm List Rebuilt Notification Check HTTP Response Status Code Is 204 +Test the Notification Endpoint - Successful + [Documentation] Test ID: 6.3.4.8.4 + ... Test title: Test the Notification Endpoint - Successful + ... Test objective: The objective is to test the Notification Endpoint provided by the notification consumer. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 7.4.7.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Get reach the notification endpoint + Check HTTP Response Status Code Is 204 +PUT Notification endpoint - Method Not Implemented + [Documentation] Test ID: 6.3.4.8.5 + ... Test title: PUT Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the PUT method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 7.4.7.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + PUT notification endpoint + Check HTTP Response Status Code Is 405 +PATCH Notification endpoint - Method Not Implemented + [Documentation] Test ID: 6.3.4.8.6 + ... Test title: PATCH Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the PATCH method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 7.4.7.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + PATCH notification endpoint + Check HTTP Response Status Code Is 405 +DELETE Notification endpoint - Method Not Implemented + [Documentation] Test ID: 6.3.4.8.7 + ... Test title: DELETE Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the DELETE method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 7.4.7.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + DELETE notification endpoint + Check HTTP Response Status Code Is 405 *** Keywords *** Check resource existence and get CallbackUri @@ -94,4 +138,37 @@ Post Alarm List Rebuilt Notification ${body}= Format String ${template} subscriptionId=${subscriptionId} Post ${callbackResp} ${body} ${outputResponse}= Output response - Set Global Variable ${response} ${outputResponse} \ No newline at end of file + Set Global Variable ${response} ${outputResponse} +GET reach the notification endpoint + Log Trying to reach the notification endpoint using GET method. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +PUT notification endpoint + Log Trying to perform a PUT. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +PATCH notification endpoint + Log Trying to perform a PATCH. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE notification endpoint + Log Trying to perform a DELETE. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL002/VNFFaultManagement-API/environment/variables.txt b/SOL002/VNFFaultManagement-API/environment/variables.txt index 27051abd..5567f283 100644 --- a/SOL002/VNFFaultManagement-API/environment/variables.txt +++ b/SOL002/VNFFaultManagement-API/environment/variables.txt @@ -21,7 +21,7 @@ ${ESCALATE_SCOPE} vnffm:v1:escalate ${SUBSCRIPTIONS_SCOPE} vnffm:v1:subscriptions ${NEG_SCOPE} vnffm:v1:invalid ${OAUTH_Encryption_ALGORITHM} HS256 -${API_VERSION} 1.12.0 +${API_VERSION} 1.14.0 ${HEADER_TEST_SUPPORTED} 0 -- GitLab From c5b91a8093f0cf5bcad1fffc110632c4ae522f1a Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Wed, 18 Dec 2024 10:17:05 +0500 Subject: [PATCH 29/37] check for Location header as per SOL 002 Specifications --- SOL002/VNFFaultManagement-API/Subscriptions.robot | 1 + 1 file changed, 1 insertion(+) diff --git a/SOL002/VNFFaultManagement-API/Subscriptions.robot b/SOL002/VNFFaultManagement-API/Subscriptions.robot index a51cd1cf..262d4e7c 100644 --- a/SOL002/VNFFaultManagement-API/Subscriptions.robot +++ b/SOL002/VNFFaultManagement-API/Subscriptions.robot @@ -39,6 +39,7 @@ Create a duplicated Subscription ... Post-Conditions: duplicated subscription is created if the IUT allows duplications, otherwise the duplicated subscription is not created Post Create subscription Check Response for duplicated subscription + Check HTTP Response Header Contains Location Void [Documentation] Test ID: 6.3.4.4.3 -- GitLab From 544187f4b6a4680011d43db7af5533ce26275768 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 23 Jan 2025 10:56:29 +0500 Subject: [PATCH 30/37] Editorial Change: Handle Mojibake --- .../VNFFaultManagement-API/schemas/FmSubscription.schema.json | 2 +- .../VNFFaultManagement-API/schemas/FmSubscriptions.schema.json | 2 +- SOL002/VNFFaultManagement-API/schemas/alarm.schema.json | 2 +- .../schemas/alarmNotification.schema.json | 2 +- SOL002/VNFFaultManagement-API/schemas/alarms.schema.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/SOL002/VNFFaultManagement-API/schemas/FmSubscription.schema.json b/SOL002/VNFFaultManagement-API/schemas/FmSubscription.schema.json index a911edc7..6231e77a 100644 --- a/SOL002/VNFFaultManagement-API/schemas/FmSubscription.schema.json +++ b/SOL002/VNFFaultManagement-API/schemas/FmSubscription.schema.json @@ -215,7 +215,7 @@ "type": "string" }, "monitoringType": { - "description": "Type of monitoring way. VALUES: \n ΓÇó\tVIM_CISM\n ΓÇó\tEXTERNAL\n ΓÇó\tPAAS\n", + "description": "Type of monitoring way. VALUES: \n •\tVIM_CISM\n •\tEXTERNAL\n •\tPAAS\n", "type": "string", "enum": [ "VIM_CISM", diff --git a/SOL002/VNFFaultManagement-API/schemas/FmSubscriptions.schema.json b/SOL002/VNFFaultManagement-API/schemas/FmSubscriptions.schema.json index 2381b8cb..83a3b2be 100644 --- a/SOL002/VNFFaultManagement-API/schemas/FmSubscriptions.schema.json +++ b/SOL002/VNFFaultManagement-API/schemas/FmSubscriptions.schema.json @@ -217,7 +217,7 @@ "type": "string" }, "monitoringType": { - "description": "Type of monitoring way. VALUES: \n ΓÇó\tVIM_CISM\n ΓÇó\tEXTERNAL\n ΓÇó\tPAAS\n", + "description": "Type of monitoring way. VALUES: \n •\tVIM_CISM\n •\tEXTERNAL\n •\tPAAS\n", "type": "string", "enum": [ "VIM_CISM", diff --git a/SOL002/VNFFaultManagement-API/schemas/alarm.schema.json b/SOL002/VNFFaultManagement-API/schemas/alarm.schema.json index 970c70e6..82a31527 100644 --- a/SOL002/VNFFaultManagement-API/schemas/alarm.schema.json +++ b/SOL002/VNFFaultManagement-API/schemas/alarm.schema.json @@ -157,7 +157,7 @@ "type": "string" }, "probableCause": { - "description": "Information about the probable cause of the fault. Valid values applicable to specific Alarms are specified as \"Probable cause\" values of the Alarm applicable to Ve-Vnfm reference point. If the attribute \"faultType\" has the value ΓÇ£NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGEΓÇ¥, the permitted values are: \n - \"NFVI_COMPONENT_MAINTENANCE\": Maintenance of NFVI components, e.g. physical maintenance/repair, \n hypervisor software updates, etc.\n - \"NFVI_COMPONENT_EVACUATION\": Evacuation of physical hosts.\n - \"NFVI_COMPONENT_OPTIMIZATION\": Operation and management of NFVI resources, e.g. to support energy\n efficiency or resource usage optimization.\n", + "description": "Information about the probable cause of the fault. Valid values applicable to specific Alarms are specified as \"Probable cause\" values of the Alarm applicable to Ve-Vnfm reference point. If the attribute \"faultType\" has the value \"NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGE\", the permitted values are: \n - \"NFVI_COMPONENT_MAINTENANCE\": Maintenance of NFVI components, e.g. physical maintenance/repair, \n hypervisor software updates, etc.\n - \"NFVI_COMPONENT_EVACUATION\": Evacuation of physical hosts.\n - \"NFVI_COMPONENT_OPTIMIZATION\": Operation and management of NFVI resources, e.g. to support energy\n efficiency or resource usage optimization.\n", "type": "string" }, "isRootCause": { diff --git a/SOL002/VNFFaultManagement-API/schemas/alarmNotification.schema.json b/SOL002/VNFFaultManagement-API/schemas/alarmNotification.schema.json index 986ced11..14cc4b86 100644 --- a/SOL002/VNFFaultManagement-API/schemas/alarmNotification.schema.json +++ b/SOL002/VNFFaultManagement-API/schemas/alarmNotification.schema.json @@ -189,7 +189,7 @@ "type": "string" }, "probableCause": { - "description": "Information about the probable cause of the fault. Valid values applicable to specific Alarms are specified as \"Probable cause\" values of the Alarm applicable to Ve-Vnfm reference point. If the attribute \"faultType\" has the value ΓÇ£NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGEΓÇ¥, the permitted values are: \n - \"NFVI_COMPONENT_MAINTENANCE\": Maintenance of NFVI components, e.g. physical maintenance/repair, \n hypervisor software updates, etc.\n - \"NFVI_COMPONENT_EVACUATION\": Evacuation of physical hosts.\n - \"NFVI_COMPONENT_OPTIMIZATION\": Operation and management of NFVI resources, e.g. to support energy\n efficiency or resource usage optimization.\n", + "description": "Information about the probable cause of the fault. Valid values applicable to specific Alarms are specified as \"Probable cause\" values of the Alarm applicable to Ve-Vnfm reference point. If the attribute \"faultType\" has the value \"NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGE\", the permitted values are: \n - \"NFVI_COMPONENT_MAINTENANCE\": Maintenance of NFVI components, e.g. physical maintenance/repair, \n hypervisor software updates, etc.\n - \"NFVI_COMPONENT_EVACUATION\": Evacuation of physical hosts.\n - \"NFVI_COMPONENT_OPTIMIZATION\": Operation and management of NFVI resources, e.g. to support energy\n efficiency or resource usage optimization.\n", "type": "string" }, "isRootCause": { diff --git a/SOL002/VNFFaultManagement-API/schemas/alarms.schema.json b/SOL002/VNFFaultManagement-API/schemas/alarms.schema.json index 74582f4b..0d4e476a 100644 --- a/SOL002/VNFFaultManagement-API/schemas/alarms.schema.json +++ b/SOL002/VNFFaultManagement-API/schemas/alarms.schema.json @@ -159,7 +159,7 @@ "type": "string" }, "probableCause": { - "description": "Information about the probable cause of the fault. Valid values applicable to specific Alarms are specified as \"Probable cause\" values of the Alarm applicable to Ve-Vnfm reference point. If the attribute \"faultType\" has the value ΓÇ£NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGEΓÇ¥, the permitted values are: \n - \"NFVI_COMPONENT_MAINTENANCE\": Maintenance of NFVI components, e.g. physical maintenance/repair, \n hypervisor software updates, etc.\n - \"NFVI_COMPONENT_EVACUATION\": Evacuation of physical hosts.\n - \"NFVI_COMPONENT_OPTIMIZATION\": Operation and management of NFVI resources, e.g. to support energy\n efficiency or resource usage optimization.\n", + "description": "Information about the probable cause of the fault. Valid values applicable to specific Alarms are specified as \"Probable cause\" values of the Alarm applicable to Ve-Vnfm reference point. If the attribute \"faultType\" has the value \"NFVI_OAM_VIRTUALISED_RESOURCE_STATE_CHANGE\", the permitted values are: \n - \"NFVI_COMPONENT_MAINTENANCE\": Maintenance of NFVI components, e.g. physical maintenance/repair, \n hypervisor software updates, etc.\n - \"NFVI_COMPONENT_EVACUATION\": Evacuation of physical hosts.\n - \"NFVI_COMPONENT_OPTIMIZATION\": Operation and management of NFVI resources, e.g. to support energy\n efficiency or resource usage optimization.\n", "type": "string" }, "isRootCause": { -- GitLab From b404a3e79753a1c1ceaafdce1813032a690913b2 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 5 Dec 2024 17:05:23 +0500 Subject: [PATCH 31/37] update SOL 002 version in test cases description from 4.5.1 to 5.1.1 --- .../IndividualPmJob.robot | 22 ++++++------ .../IndividualReport.robot | 16 ++++----- .../IndividualThreshold.robot | 22 ++++++------ .../NotificationEndpoint.robot | 4 +-- .../Notifications.robot | 4 +-- .../VNFPerformanceManagement-API/PMJobs.robot | 36 +++++++++---------- .../Thresholds.robot | 26 +++++++------- 7 files changed, 65 insertions(+), 65 deletions(-) diff --git a/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot b/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot index 411d03f7..7e31799d 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualPmJob.robot @@ -14,7 +14,7 @@ GET individual VNF Performance Job ... Test title: Get individual VNF Performance Job ... Test objective: The objective is to test the retrieval of an individual VNF performance monitoring job and perform a JSON schema and content validation of the collected job data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -29,7 +29,7 @@ GET individual VNF Performance Job with invalid resource identifier ... Test title: Get individual VNF Performance Job with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF performance monitoring job fails when using an invalid resource identifier, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.3.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -42,7 +42,7 @@ DELETE Individual VNF Performance Job ... Test title: Delete Individual VNF Performance Job ... Test objective: The objective is to test the deletion of an individual VNF performance monitoring job ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is no more available in the VNFM @@ -55,7 +55,7 @@ DELETE Individual VNF Performance Job with invalid resource identifier ... Test title: Delete individual VNF Performance Job with invalid resource identifier ... Test objective: The objective is to test that the deletion of an individual VNF performance monitoring job fails when using an invalid resource identifier, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ POST Individual VNF Performance Job - Method not implemented ... Test title: POST Individual VNF Performance Job - method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF Performance Monitoring Job ... Pre-conditions: none - ... Reference: Clause 6.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.3.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -80,7 +80,7 @@ PUT Individual VNF Performance Job - Method not implemented ... Test title: PUT Individual VNF Performance Job - method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF Performance Monitoring Job ... Pre-conditions: none - ... Reference: Clause 6.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.3.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -92,7 +92,7 @@ PATCH Individual VNF Performance Job ... Test title: PATCH Individual VNF Performance Job ... Test objective: The objective is to test that PATCH method allows to modify an exsisting individual PM job resource. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -106,7 +106,7 @@ PATCH Individual VNF Performance Job - Precondition failed ... Test title: PATCH Individual VNF Performance Job - Precondition failed ... Test objective: The objective is to attempt to Modify an individual alarm resource, where the precondition was not met ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is not modified by the operation @@ -120,7 +120,7 @@ PATCH Individual VNF Performance Job - UNPROCESSABLE CONTENT ... Test title: PATCH Individual VNF Performance Job - UNPROCESSABLE CONTENT ... Test objective: The objective is to test that PATCH method cannot modify an exsisting individual PM job resource when the callback URI provided in the Request body is unreachable by the VNFM. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.3.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM cannot reach the Notification endpoint. ... Post-Conditions: none @@ -132,7 +132,7 @@ DELETE Individual VNF Performance Job with permitted authorization scope ... Test title: Delete Individual VNF Performance Job with permitted authorization scope ... Test objective: The objective is to test the deletion of an individual VNF performance monitoring job with permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is no more available in the VNFM @@ -144,7 +144,7 @@ DELETE Individual VNF Performance Job with NOT permitted authorization scope ... Test title: Delete Individual VNF Performance Job with NOT permitted authorization scope ... Test objective: The objective is to test the deletion of an individual VNF performance monitoring job with NOT permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.3.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is no more available in the VNFM diff --git a/SOL002/VNFPerformanceManagement-API/IndividualReport.robot b/SOL002/VNFPerformanceManagement-API/IndividualReport.robot index dded8544..1e9eaab7 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualReport.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualReport.robot @@ -11,7 +11,7 @@ Get Individual Performance Report ... Test title: Get Individual Performance Report ... Test objective: The objective is to test the retrieval of an individual VNF performance report associated to a monitoring job and perform a JSON schema validation of the collected report data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -24,7 +24,7 @@ Get Individual Performance Report with invalid resource endpoint ... Test title: Get Individual Performance Report with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of an individual VNF performance report associated to a monitoring job fails when using an invalid resource endpoint ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -37,7 +37,7 @@ POST Individual Performance Report - Method not implemented ... Test title: POST Individual Performance Report - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF performance report within a monitoring job ... Pre-conditions: none - ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.4.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -49,7 +49,7 @@ PUT Individual Performance Report - Method not implemented ... Test title: PUT Individual Performance Report - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF performance report within a monitoring job ... Pre-conditions: none - ... Reference: Clause 6.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.4.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -61,7 +61,7 @@ PATCH Individual Performance Report - Method not implemented ... Test title: PATCH Individual Performance Report - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify an existing VNF performance report within a monitoring job ... Pre-conditions: none - ... Reference: Clause 6.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.4.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -73,7 +73,7 @@ DELETE Individual Performance Report - Method not implemented ... Test title: DELETE Individual Performance Report - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing VNF performance report within a monitoring job ... Pre-conditions: none - ... Reference: Clause 6.4.4.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.4.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -84,7 +84,7 @@ Get Individual Performance Report with permitted authorization scope ... Test title: Get Individual Performance Report with permitted authorization scope ... Test objective: The objective is to test the retrieval of an individual VNF performance report associated to a monitoring job and perform a JSON schema validation of the collected report data structure with permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -96,7 +96,7 @@ Get Individual Performance Report with NOT permitted authorization scope ... Test title: Get Individual Performance Report with NOT permitted authorization scope ... Test objective: The objective is to test the retrieval of an individual VNF performance report associated to a monitoring job and perform a JSON schema validation of the collected report data structure with NOT permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance reports are set for a monitoring job in the VNFM. - ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.4.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot b/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot index 252516ad..832c0928 100644 --- a/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot +++ b/SOL002/VNFPerformanceManagement-API/IndividualThreshold.robot @@ -13,7 +13,7 @@ GET Individual Threshold ... Test title: GET Individual Threshold ... Test objective: The objective is to test the retrieval of an individual VNF performance threshold and perform a JSON schema and content validation of the collected threshold data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -28,7 +28,7 @@ GET Individual Threshold with invalid resource identifier ... Test title: GET Individual Threshold with invalid resource identifier ... Test objective: The objective is to test that the retrieval of an individual VNF performance threshold fails when using an invalid resource identifier ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -41,7 +41,7 @@ DELETE Individual Threshold ... Test title: DELETE Individual Threshold ... Test objective: The objective is to test the deletion of an individual VNF performance threshold ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Threshold is not available anymore in the VNFM @@ -54,7 +54,7 @@ DELETE Individual Threshold with invalid resource identifier ... Test title: DELETE Individual Threshold with invalid resource identifier ... Test objective: The objective is to test the deletion of an individual VNF performance threshold ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.6.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -67,7 +67,7 @@ POST Individual Threshold - Method not implemented ... Test title: POST Individual Threshold - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF Performance Threshold ... Pre-conditions: none - ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.6.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Threshold is not created on the VNFM @@ -79,7 +79,7 @@ PUT Individual Threshold - Method not implemented ... Test title: PUT Individual Threshold - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to update an existing VNF Performance threshold ... Pre-conditions: none - ... Reference: Clause 6.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.6.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -91,7 +91,7 @@ PATCH Individual Threshold ... Test title: PATCH Individual Threshold ... Test objective: The objective is to test that PATCH method allows to modify an Individual threshold resource. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Threshold is not modified by the operation @@ -105,7 +105,7 @@ PATCH Individual Threshold - Precondition failed ... Test title: PATCH Individual Threshold - Preconition failed ... Test objective: The objective is to attempt to modify an individual threshold resource, where the precondition was not met. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNFM. - ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is not modified by the operation @@ -119,7 +119,7 @@ PATCH Individual Threshold - UNPROCESSABLE CONTENT ... Test title: PATCH Individual Threshold - UNPROCESSABLE CONTENT ... Test objective: The objective is to test that PATCH method cannot modify an exsisting individual PM job resource when the callback URI provided in the Request body is unreachable by the VNFM. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.6.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM cannot reach the Notification endpoint. ... Post-Conditions: The VNF Performance Threshold is not modified by the operation @@ -132,7 +132,7 @@ GET Individual Threshold with permitted authorization scope ... Test title: GET Individual Threshold with permitted authorization scope ... Test objective: The objective is to test the retrieval of an individual VNF performance threshold and perform a JSON schema and content validation of the collected threshold data structure with permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -146,7 +146,7 @@ GET Individual Threshold with NOT permitted authorization scope ... Test title: GET Individual Threshold with NOT permitted authorization scope ... Test objective: The objective is to test the retrieval of an individual VNF performance threshold and perform a JSON schema and content validation of the collected threshold data structure with not permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.6.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFPerformanceManagement-API/NotificationEndpoint.robot b/SOL002/VNFPerformanceManagement-API/NotificationEndpoint.robot index fb266385..78172237 100644 --- a/SOL002/VNFPerformanceManagement-API/NotificationEndpoint.robot +++ b/SOL002/VNFPerformanceManagement-API/NotificationEndpoint.robot @@ -13,7 +13,7 @@ VNF Performance Information Availability Notification ... Test title: VNF Performance Information Availability Notification ... Test objective: The objective is to test that VNF Performance Information Availability Notification is delivered with success to the notification consumer ... Pre-conditions: A VNF performance job is created, and a subscription for information availability notifications is available in the VNFM. - ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none @@ -25,7 +25,7 @@ VNF Threshold Crossed Notification ... Test title: VNF Threshold Crossed Notification ... Test objective: The objective is to test that VNF Threshold Crossed Notification is delivered with success to the notification consumer ... Pre-conditions: A VNF performance job is created, and a subscription for Threshold Crossed Notification is available in the VNFM. - ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_Notif_Endpoint ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFPerformanceManagement-API/Notifications.robot b/SOL002/VNFPerformanceManagement-API/Notifications.robot index a34c4bb2..37f36430 100644 --- a/SOL002/VNFPerformanceManagement-API/Notifications.robot +++ b/SOL002/VNFPerformanceManagement-API/Notifications.robot @@ -17,7 +17,7 @@ VNF Performance Information Availability Notification ... Test title: VNF Performance Information Availability Notification ... Test objective: The objective is to test the dispatch of VNF Performance Information Availability Notification when new VNF performance information is available in the NFVO, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF performance job is created, and a subscription for information availability notifications is available in the VNFM. - ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -30,7 +30,7 @@ VNF Threshold Crossed Notification ... Test title: VNF Threshold Crossed Notification ... Test objective: The objective is to test the dispatch of VNF Threshold Crossed Notification when a previously set VNF performance metric threshold is crossed, and perform a JSON schema and content validation of the delivered notification. The action that triggers the notification under test is an explicit test step, but it is not performed by the test system. ... Pre-conditions: A VNF performance job is created, and a threshold subscription is available in the VNFM. - ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.9.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFPerformanceManagement-API/PMJobs.robot b/SOL002/VNFPerformanceManagement-API/PMJobs.robot index 70227517..0e6f86d2 100644 --- a/SOL002/VNFPerformanceManagement-API/PMJobs.robot +++ b/SOL002/VNFPerformanceManagement-API/PMJobs.robot @@ -13,7 +13,7 @@ GET all VNF Performance Monitoring Jobs ... Test title: GET all VNF Performance Monitoring Jobs ... Test objective: The objective is to test the retrieval of all the available VNF performance monitoring jobs and perform a JSON schema and content validation of the collected jobs data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ GET VNF Performance Monitoring Jobs with attribute-based filter ... Test title: GET all VNF Performance Monitoring Jobs with attribute-based filter ... Test objective: The objective is to test the retrieval of VNF performance monitoring jobs using attribute-based filter, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ GET all VNF Performance Monitoring Jobs with all_fields attribute selector ... Test title: GET all VNF Performance Monitoring Jobs with all_fields attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs all_fields attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued all_fileds selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -54,7 +54,7 @@ GET all VNF Performance Monitoring Jobs with exclude_default attribute selector ... Test title: GET all VNF Performance Monitoring Jobs with exclude_default attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs exclude_default attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued exclude_default selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -68,7 +68,7 @@ GET all VNF Performance Monitoring Jobs with fields attribute selector ... Test title: GET all VNF Performance Monitoring Jobs with fields attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs fields attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued fields selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports the use of exclude_fields attribute selector ... Post-Conditions: none @@ -82,7 +82,7 @@ GET all VNF Performance Monitoring Jobs with exclude_fields attribute selector ... Test title: GET all VNF Performance Monitoring Jobs with exclude_fields attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs exclude_fields attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued exclude_fields selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM supports the use of exclude_fields attribute selector ... Post-Conditions: none @@ -96,7 +96,7 @@ GET VNF Performance Monitoring Jobs with invalid attribute-based filter ... Test title: GET VNF Performance Monitoring Jobs with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of VNF performance monitoring jobs fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -109,7 +109,7 @@ GET VNF Performance Monitoring Jobs with invalid resource endpoint ... Test title: GET VNF Performance Monitoring Jobs with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of VNF performance monitoring jobs fails when using invalid resource endpoint, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -122,7 +122,7 @@ POST Create new VNF Performance Monitoring Job - SUCCESSFUL ... Test title: POST Create a new VNF Performance Monitoring Job - SUCCESSFUL ... Test objective: The objective is to test that the POST method creates a new VNF performance monitoring job and perform the JSON schema validation of the returned job data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Job is successfully created on the VNFM @@ -136,7 +136,7 @@ PUT all VNF Performance Monitoring Jobs - Method not implemented ... Test title: PUT all VNF Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF Performance Monitoring Jobs ... Pre-conditions: none - ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -148,7 +148,7 @@ PATCH all VNF Performance Monitoring Jobs - Method not implemented ... Test title: PATCH all VNF Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to update VNF Performance Monitoring Jobs ... Pre-conditions: none - ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -160,7 +160,7 @@ DELETE all VNF Performance Monitoring Jobs - Method not implemented ... Test title: DELETE all VNF Performance Monitoring Jobs - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update VNF Performance Monitoring Jobs ... Pre-conditions: none - ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -172,7 +172,7 @@ GET VNF Performance Monitoring Jobs to get Paged Response ... Test title: GET VNF Performance Monitoring Jobs to get Paged Response ... Test objective: The objective is to test the retrieval of VNF performance monitoring jobs to get Paged response. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -185,7 +185,7 @@ GET VNF Performance Monitoring Jobs for Bad Request Response too big ... Test title: GET VNF Performance Monitoring Jobs for Bad Request Response too big ... Test objective: The objective is to test that GET method fail retrieving status information about VNF Performance Monitoring when Response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -198,7 +198,7 @@ GET all VNF Performance Monitoring Jobs with exclude_default and fields attribut ... Test title: GET all VNF Performance Monitoring Jobs with exclude_default and fields attribute selector ... Test objective: The objective is to test the retrieval of all VNF performance monitoring jobs with exclude_default and fields attribute selector, perform a JSON schema validation of the collected jobs data structure, and verify that the retrieved information matches the issued exclude_default selector ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 4.3.3.2.1, 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -211,7 +211,7 @@ POST Create new VNF Performance Monitoring Job - UNPROCESSABLE CONTENT ... Test title: POST Create a new VNF Performance Monitoring Job - UNPROCESSABLE CONTENT ... Test objective: The objective is to test that the POST method cannot create a new VNF performance monitoring job when the callback URI provided in the Request body is unreachable by the VNFM. ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM cannot reach the Notification endpoint. ... Post-Conditions: none @@ -223,7 +223,7 @@ GET all VNF Performance Monitoring Jobs with permitted authorization scope ... Test title: GET all VNF Performance Monitoring Jobs with permitted authorization scope ... Test objective: The objective is to test the retrieval of all the available VNF performance monitoring jobs and perform a JSON schema and content validation of the collected jobs data structure with permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -235,7 +235,7 @@ GET all VNF Performance Monitoring Jobs with NOT permitted authorization scope ... Test title: GET all VNF Performance Monitoring Jobs with not permitted authorization scope ... Test objective: The objective is to test the retrieval of all the available VNF performance monitoring jobs and perform a JSON schema and content validation of the collected jobs data structure with not permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance jobs are set in the VNF. - ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none diff --git a/SOL002/VNFPerformanceManagement-API/Thresholds.robot b/SOL002/VNFPerformanceManagement-API/Thresholds.robot index 35acea2c..4516fff1 100644 --- a/SOL002/VNFPerformanceManagement-API/Thresholds.robot +++ b/SOL002/VNFPerformanceManagement-API/Thresholds.robot @@ -13,7 +13,7 @@ GET All Performance Thresholds ... Test title: GET All Performance Thresholds ... Test objective: The objective is to test the retrieval of all the available VNF performance thresholds and perform a JSON schema validation of the collected thresholds data structure ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -26,7 +26,7 @@ GET Performance Thresholds with attribute-based filter ... Test title: GET Performance Thresholds with attribute-based filter ... Test objective: The objective is to test the retrieval of all the available VNF performance thresholds when using attribute-based filters, perform a JSON schema validation of the collected thresholds data structure, and verify that the retrieved information matches the issued attribute-based filter ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -40,7 +40,7 @@ GET Performance Thresholds with invalid attribute-based filter ... Test title: GET Performance Thresholds with invalid attribute-based filter ... Test objective: The objective is to test that the retrieval of VNF performance thresholds fails when using invalid attribute-based filter, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -53,7 +53,7 @@ GET Performance Thresholds with invalid resource endpoint ... Test title: GET Performance Thresholds with invalid resource endpoint ... Test objective: The objective is to test that the retrieval of VNF performance thresholds fails when using invalid resource endpoint, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -66,7 +66,7 @@ POST Create new Performance Threshold ... Test title: POST Create new Performance Threshold ... Test objective: The objective is to test that the POST method creates a new VNF performance threshold and perform the JSON schema validation of the returned threshold data structure ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Threshold is successfully created on the VNFM @@ -81,7 +81,7 @@ PUT Performance Thresholds - Method not implemented ... Test title: PUT Performance Thresholds - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify VNF Performance Thresholds ... Pre-conditions: none - ... Reference: Clause 6.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.5.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -93,7 +93,7 @@ PATCH Performance Thresholds - Method not implemented ... Test title: PATCH Performance Thresholds - Method not implemented ... Test objective: The objective is to test that PATCH method is not allowed to modify VNF Performance Thresholds ... Pre-conditions: none - ... Reference: Clause 6.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.5.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -105,7 +105,7 @@ DELETE Performance Thresholds - Method not implemented ... Test title: DELETE Performance Thresholds - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to update VNF Performance Thresholds ... Pre-conditions: none - ... Reference: Clause 6.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.5.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -117,7 +117,7 @@ GET Performance Thresholds with Paged Response ... Test title: GET Performance Thresholds with Paged Response ... Test objective: The objective is to test the retrieval of all the available VNF performance thresholds with Paged response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -130,7 +130,7 @@ GET Performance Thresholds for Bad Request Response too big ... Test title: GET Performance Thresholds for Bad Request Response too big ... Test objective: The objective is to test that the retrieval of VNF performance thresholds fails when response is too big, and perform the JSON schema validation of the failed operation HTTP response ... Pre-conditions: A VNF instance is instantiated. One or more VNF performance thresholds are set in the VNFM. - ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.5.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: none @@ -143,7 +143,7 @@ POST Create new Performance Threshold - UNPROCESSABLE CONTENT ... Test title: POST Create new Performance Threshold - UNPROCESSABLE CONTENT ... Test objective: The objective is to test that the POST method does not create a new VNF performance threshold when the callback URI provided in the Request body is unreachable by the VNFM. ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: The VNFM cannot reach the Notification endpoint. ... Post-Conditions: none @@ -155,7 +155,7 @@ POST Create new Performance Threshold with permitted authorization scope ... Test title: POST Create new Performance Threshold with permitted authorization scope ... Test objective: The objective is to test that the POST method creates a new VNF performance threshold and perform the JSON schema validation of the returned threshold data structure when the authorization scope is permitted ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Threshold is successfully created on the VNFM @@ -169,7 +169,7 @@ POST Create new Performance Threshold with NOT permitted authorization scope ... Test title: POST Create new Performance Threshold with permitted authorization scope ... Test objective: The objective is to test that the POST method creates a new VNF performance threshold and perform the JSON schema validation of the returned threshold data structure when the authorization scope is not permitted ... Pre-conditions: A VNF instance is instantiated. - ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 6.4.5.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VNFM ... Applicability: none ... Post-Conditions: The VNF Performance Threshold is successfully created on the VNFM -- GitLab From 8b020ec2715eaa9a86110ea615f2030dfb390016 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 6 Dec 2024 10:59:17 +0500 Subject: [PATCH 32/37] update test cases of VNFPerformanceManagement as per SOL 002 version 5.1.1 --- .../schemas/PmJob.schema.json | 50 ++++++++++++++++++- .../schemas/PmJobs.schema.json | 50 ++++++++++++++++++- 2 files changed, 96 insertions(+), 4 deletions(-) diff --git a/SOL002/VNFPerformanceManagement-API/schemas/PmJob.schema.json b/SOL002/VNFPerformanceManagement-API/schemas/PmJob.schema.json index 2ababaae..6e805fb6 100644 --- a/SOL002/VNFPerformanceManagement-API/schemas/PmJob.schema.json +++ b/SOL002/VNFPerformanceManagement-API/schemas/PmJob.schema.json @@ -105,8 +105,54 @@ "fileSize": { "description": "The size of the report file in bytes, if known.\n", "type": "integer", - "minimum": 0, - "maximum": 1024 + "minimum": 0 + } + } + }, + "pmJobConnection": { + "description": "An access information and interface information of PM job to monitor the PM of VNF instance by the VNFM. This can include for instance certain interface endpoint URI together with necessary credentials to access it.\n", + "type": "array", + "items": { + "description": "The MonitoringConnection shall follow the indications. * NOTE:\tThe VNFM can be made aware of monitoring connection information, including their identifiers to \n be used by configuration means outside the scope of the present document (e.g. using relevant NFV-MANO management \n APIs as defined in ETSI GS NFV-SOL 009). \n", + "type": "object", + "required": [ + "id", + "monitoringType" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "monitoringType": { + "description": "Type of monitoring way. VALUES: \n ΓÇó\tVIM_CISM\n ΓÇó\tEXTERNAL\n ΓÇó\tPAAS\n", + "type": "string", + "enum": [ + "VIM_CISM", + "EXTERNAL", + "PAAS" + ] + }, + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "paasServiceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + } } } }, diff --git a/SOL002/VNFPerformanceManagement-API/schemas/PmJobs.schema.json b/SOL002/VNFPerformanceManagement-API/schemas/PmJobs.schema.json index a623a448..ac5d594e 100644 --- a/SOL002/VNFPerformanceManagement-API/schemas/PmJobs.schema.json +++ b/SOL002/VNFPerformanceManagement-API/schemas/PmJobs.schema.json @@ -107,8 +107,54 @@ "fileSize": { "description": "The size of the report file in bytes, if known.\n", "type": "integer", - "minimum": 0, - "maximum": 1024 + "minimum": 0 + } + } + }, + "pmJobConnection": { + "description": "An access information and interface information of PM job to monitor the PM of VNF instance by the VNFM. This can include for instance certain interface endpoint URI together with necessary credentials to access it.\n", + "type": "array", + "items": { + "description": "The MonitoringConnection shall follow the indications. * NOTE:\tThe VNFM can be made aware of monitoring connection information, including their identifiers to \n be used by configuration means outside the scope of the present document (e.g. using relevant NFV-MANO management \n APIs as defined in ETSI GS NFV-SOL 009). \n", + "type": "object", + "required": [ + "id", + "monitoringType" + ], + "properties": { + "id": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "monitoringType": { + "description": "Type of monitoring way. VALUES: \n ΓÇó\tVIM_CISM\n ΓÇó\tEXTERNAL\n ΓÇó\tPAAS\n", + "type": "string", + "enum": [ + "VIM_CISM", + "EXTERNAL", + "PAAS" + ] + }, + "vimId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "paasServiceId": { + "description": "An identifier with the intention of being globally unique.\n", + "type": "string" + }, + "interfaceInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "accessInfo": { + "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n", + "type": "object" + }, + "extra": { + "description": "A string defined in IETF RFC 8259.\n", + "type": "string" + } } } }, -- GitLab From f5cf83e84467fbaa33c0663c83b28462d2a493d5 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Fri, 6 Dec 2024 12:47:53 +0500 Subject: [PATCH 33/37] add header check for Location as per SOL002 specifications --- SOL002/VNFPerformanceManagement-API/PMJobs.robot | 1 + 1 file changed, 1 insertion(+) diff --git a/SOL002/VNFPerformanceManagement-API/PMJobs.robot b/SOL002/VNFPerformanceManagement-API/PMJobs.robot index 0e6f86d2..8cfe2d41 100644 --- a/SOL002/VNFPerformanceManagement-API/PMJobs.robot +++ b/SOL002/VNFPerformanceManagement-API/PMJobs.robot @@ -128,6 +128,7 @@ POST Create new VNF Performance Monitoring Job - SUCCESSFUL ... Post-Conditions: The VNF Performance Job is successfully created on the VNFM Send Post Request Create new VNF Performance Monitoring Job Check HTTP Response Status Code Is 201 + Check HTTP Response Header Contains Location Check HTTP Response Body Json Schema Is PmJob Check Postcondition PmJob Exists -- GitLab From 12df539d7454cdb37cd36f264a5b2f57859124fa Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Tue, 17 Dec 2024 11:28:56 +0500 Subject: [PATCH 34/37] test different methods of notification endpoint of VNF LCM as per SOL 002 specification version 5.1.1 --- .../NotificationEndpoint.robot | 46 ++++++++++++++++++- .../VNFPerformanceManagementKeywords.robot | 35 +++++++++++++- .../environment/variables.txt | 2 +- 3 files changed, 80 insertions(+), 3 deletions(-) diff --git a/SOL002/VNFPerformanceManagement-API/NotificationEndpoint.robot b/SOL002/VNFPerformanceManagement-API/NotificationEndpoint.robot index 78172237..7def3289 100644 --- a/SOL002/VNFPerformanceManagement-API/NotificationEndpoint.robot +++ b/SOL002/VNFPerformanceManagement-API/NotificationEndpoint.robot @@ -5,6 +5,7 @@ Library JSONLibrary Library OperatingSystem Library String Library REST ${VNFM_SCHEMA}://${VNFM_HOST}:${VNFM_PORT} ssl_verify=false +Resource VNFPerformanceManagementKeywords.robot Suite Setup Check resource existence and get CallbackUri *** Test Cases *** @@ -31,11 +32,54 @@ VNF Threshold Crossed Notification ... Post-Conditions: none Post VNF Threshold Crossed Notification Check HTTP Response Status Code Is 204 +Test the Notification Endpoint - Successful + [Documentation] Test ID: 6.3.3.10.3 + ... Test title: Test the Notification Endpoint - Successful + ... Test objective: The objective is to test the Notification Endpoint provided by the notification consumer. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 6.4.9.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + Get reach the notification endpoint + Check HTTP Response Status Code Is 204 +PUT Notification endpoint - Method Not Implemented + [Documentation] Test ID: 6.3.3.10.4 + ... Test title: PUT Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the PUT method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 6.4.9.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + PUT notification endpoint + Check HTTP Response Status Code Is 405 +PATCH Notification endpoint - Method Not Implemented + [Documentation] Test ID: 6.3.3.10.5 + ... Test title: PATCH Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the PATCH method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 6.4.9.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + PATCH notification endpoint + Check HTTP Response Status Code Is 405 +DELETE Notification endpoint - Method Not Implemented + [Documentation] Test ID: 6.3.3.10.6 + ... Test title: DELETE Notification endpoint - Method Not Implemented + ... Test objective: The objective is to test the DELETE method for Notification Endpoint provided by the consumer is not implemented. + ... Pre-conditions: A notification endpoint is provided by the API consumer upon subscription. + ... Reference: Clause 6.4.9.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 + ... Config ID: Config_prod_Notif_Endpoint + ... Applicability: none + ... Post-Conditions: none + DELETE notification endpoint + Check HTTP Response Status Code Is 405 *** Keywords *** Check resource existence and get CallbackUri Set Headers {"Accept": "${ACCEPT_JSON}"} - Set Headers {"Version": "${API_VERSION}"} Set Headers {"Version": "${API_VERSION}"} Set Headers {"Content-Type": "${CONTENT_TYPE_JSON}"} Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} diff --git a/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot b/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot index b4097348..4cb915c8 100644 --- a/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot +++ b/SOL002/VNFPerformanceManagement-API/VNFPerformanceManagementKeywords.robot @@ -472,4 +472,37 @@ GET Individual VNF Performance Threshold with not permitted authorization scope Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${authorizationToken}"} GET ${apiRoot}/${apiName}/${apiMajorVersion}/thresholds/${thresholdId} ${output}= Output response - Set Suite Variable ${response} ${output} \ No newline at end of file + Set Suite Variable ${response} ${output} +GET reach the notification endpoint + Log Trying to reach the notification endpoint using GET method. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + GET ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +PUT notification endpoint + Log Trying to perform a PUT. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Put ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} +PATCH notification endpoint + Log Trying to perform a PATCH. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Patch ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} + +DELETE notification endpoint + Log Trying to perform a DELETE. This method should not be implemented. + Set Headers {"Accept": "${ACCEPT_JSON}"} + Set Headers {"Version": "${API_VERSION}"} + Run Keyword If ${AUTH_USAGE} == 1 Set Headers {"${AUTHORIZATION_HEADER}":"${AUTHORIZATION_TOKEN}"} + Delete ${callbackResp} + ${outputResponse}= Output response + Set Global Variable ${response} ${outputResponse} \ No newline at end of file diff --git a/SOL002/VNFPerformanceManagement-API/environment/variables.txt b/SOL002/VNFPerformanceManagement-API/environment/variables.txt index e641301d..f74d963b 100644 --- a/SOL002/VNFPerformanceManagement-API/environment/variables.txt +++ b/SOL002/VNFPerformanceManagement-API/environment/variables.txt @@ -20,7 +20,7 @@ ${PM_JOBS_SCOPE} vnfpm:v1:pm_jobs ${THRESHOLDS_SCOPE} vnfpm:v1:thresholds ${NEG_SCOPE} vnfpm:v1:invalid ${OAUTH_Encryption_ALGORITHM} HS256 -${API_VERSION} 2.12.0 +${API_VERSION} 2.13.0 ${HEADER_TEST_SUPPORTED} 0 -- GitLab From 095f48959d8668c7c1de391b06e137556e654fea Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 23 Jan 2025 10:59:46 +0500 Subject: [PATCH 35/37] Editorial change: Resolve Mojibake --- SOL002/VNFPerformanceManagement-API/schemas/PmJob.schema.json | 2 +- SOL002/VNFPerformanceManagement-API/schemas/PmJobs.schema.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/SOL002/VNFPerformanceManagement-API/schemas/PmJob.schema.json b/SOL002/VNFPerformanceManagement-API/schemas/PmJob.schema.json index 6e805fb6..91e6f945 100644 --- a/SOL002/VNFPerformanceManagement-API/schemas/PmJob.schema.json +++ b/SOL002/VNFPerformanceManagement-API/schemas/PmJob.schema.json @@ -125,7 +125,7 @@ "type": "string" }, "monitoringType": { - "description": "Type of monitoring way. VALUES: \n ΓÇó\tVIM_CISM\n ΓÇó\tEXTERNAL\n ΓÇó\tPAAS\n", + "description": "Type of monitoring way. VALUES: \n •\tVIM_CISM\n •\tEXTERNAL\n •\tPAAS\n", "type": "string", "enum": [ "VIM_CISM", diff --git a/SOL002/VNFPerformanceManagement-API/schemas/PmJobs.schema.json b/SOL002/VNFPerformanceManagement-API/schemas/PmJobs.schema.json index ac5d594e..8a884794 100644 --- a/SOL002/VNFPerformanceManagement-API/schemas/PmJobs.schema.json +++ b/SOL002/VNFPerformanceManagement-API/schemas/PmJobs.schema.json @@ -127,7 +127,7 @@ "type": "string" }, "monitoringType": { - "description": "Type of monitoring way. VALUES: \n ΓÇó\tVIM_CISM\n ΓÇó\tEXTERNAL\n ΓÇó\tPAAS\n", + "description": "Type of monitoring way. VALUES: \n •\tVIM_CISM\n •\tEXTERNAL\n •\tPAAS\n", "type": "string", "enum": [ "VIM_CISM", -- GitLab From 3338a5bf22cbedc96409e5d662f76f47da7d0ac5 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 5 Dec 2024 16:55:41 +0500 Subject: [PATCH 36/37] update SOL 002 version in test cases description from 4.5.1 to 5.1.1 --- .../VNFConfiguration-API/Configuration.robot | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/SOL002/VNFConfiguration-API/Configuration.robot b/SOL002/VNFConfiguration-API/Configuration.robot index 93a73a93..2b7feaf5 100644 --- a/SOL002/VNFConfiguration-API/Configuration.robot +++ b/SOL002/VNFConfiguration-API/Configuration.robot @@ -14,7 +14,7 @@ Set new VNF Configuration ... Test title: Set a new VNF Configuration ... Test objective: The objective is to test the creation of a new VNF configuration and perform a JSON schema validation of the returned configuration data structure ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation of HTTP Etag opaque identifiers ... Post-Conditions: The configuration is successfully set in the VNF and it matches the issued configuration @@ -30,7 +30,7 @@ Get information about a VNF configuration ... Test title: Get information about a VNF configuration ... Test objective: The objective is to test the retrieval of an existing VNF instance configuration and perform a JSON schema validation of the collected configuration data structure ... Pre-conditions: A VNF instance is instantiated. The VNF instance is already configured. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -44,7 +44,7 @@ Get information about a VNF configuration with HTTP Etag ... Test title: Get information about a VNF configuration with HTTP Etag ... Test objective: The objective is to test the retrieval of an existing VNF instance configuration, check the generation by the VNF of an HTTP Etag opaque identifier, and perform a JSON schema validation of the collected configuration data structure ... Pre-conditions: A VNF instance is instantiated. The VNF instance is already configured - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation of HTTP Etag opaque identifiers ... Post-Conditions: none @@ -59,7 +59,7 @@ Set new VNF Configuration - HTTP Etag precondition unsuccessful ... Test title: Set a new VNF Configuration - HTTP Etag precondition unsuccessful ... Test objective: The objective is to test the unsuccess in setting a duplication of VNF configuration identified by an already used HTTP Etag identifier. The test also checks the JSON schema of the unsuccessful operation HTTP response. ... Pre-conditions: A VNF instance is instantiated. The VNF instance is already configured (Test ID 6.3.1.1.1) with a given HTTP Etag identifier. - ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation of HTTP Etag opaque identifiers ... Post-Conditions: The VNF configuration is not modified by the unsuccessful operation and it matches the configuration issued in Test ID 6.3.1.1.1 @@ -73,7 +73,7 @@ POST VNF Configuration - Method not implemented ... Test title: POST VNF Configuration - Method not implemented ... Test objective: The objective is to test that POST method is not allowed to create a new VNF configuration ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 9.4.2.3.1 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -85,7 +85,7 @@ PUT VNF Configuration - Method not implemented ... Test title: PUT VNF Configuration - Method not implemented ... Test objective: The objective is to test that PUT method is not allowed to modify an existing VNF configuration ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 9.4.2.3.3 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -97,7 +97,7 @@ DELETE VNF Configuration - Method not implemented ... Test title: Delete VNF Configuration - Method not implemented ... Test objective: The objective is to test that DELETE method is not allowed to delete an existing VNF configuration ... Pre-conditions: none - ... Reference: Clause 9.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 9.4.2.3.5 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -109,7 +109,7 @@ Set new VNF Configuration With Attribute vnfConfigurationData ... Test title: Set a new VNF Configuration with Attribute vnfConfigurationData ... Test objective: The objective is to test the creation of a new VNF configuration and perform a JSON schema validation of the returned configuration data structure ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation of HTTP Etag opaque identifiers ... Post-Conditions: The configuration is successfully set in the VNF and it matches the issued configuration @@ -124,7 +124,7 @@ Set new VNF Configuration With Attribute vnfcConfigurationData ... Test title: Set a new VNF Configuration with Attribute vnfcConfigurationData ... Test objective: The objective is to test the creation of a new VNF configuration and perform a JSON schema validation of the returned configuration data structure ... Pre-conditions: A VNF instance is instantiated - ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 9.4.2.3.4 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: The VNF supports the generation of HTTP Etag opaque identifiers ... Post-Conditions: The configuration is successfully set in the VNF and it matches the issued configuration @@ -139,7 +139,7 @@ Get information about a VNF configuration with permitted authorization scope ... Test title: Get information about a VNF configuration with permitted authorization scope ... Test objective: The objective is to test the retrieval of an existing VNF instance configuration and perform a JSON schema validation of the collected configuration data structure with permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. The VNF instance is already configured. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none @@ -152,7 +152,7 @@ Get information about a VNF configuration with NOT permitted authorization scope ... Test title: Get information about a VNF configuration with not permitted authorization scope ... Test objective: The objective is to test the retrieval of an existing VNF instance configuration and perform a JSON schema validation of the collected configuration data structure with not permitted authorization scope ... Pre-conditions: A VNF instance is instantiated. The VNF instance is already configured. - ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v4.5.1 + ... Reference: Clause 9.4.2.3.2 - ETSI GS NFV-SOL 002 [2] v5.1.1 ... Config ID: Config_prod_VE ... Applicability: none ... Post-Conditions: none -- GitLab From 6cb9b37ca57ff3a8485ec13922751df4ff64aaa8 Mon Sep 17 00:00:00 2001 From: "mudassar.sabeel" Date: Thu, 23 Jan 2025 11:02:52 +0500 Subject: [PATCH 37/37] Editorial Change: Handle Mojibake --- .../schemas/vnfConfigModifications.schema.json | 2 +- .../VNFConfiguration-API/schemas/vnfConfiguration.schema.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/SOL002/VNFConfiguration-API/schemas/vnfConfigModifications.schema.json b/SOL002/VNFConfiguration-API/schemas/vnfConfigModifications.schema.json index cf781bef..30a3ebdc 100644 --- a/SOL002/VNFConfiguration-API/schemas/vnfConfigModifications.schema.json +++ b/SOL002/VNFConfiguration-API/schemas/vnfConfigModifications.schema.json @@ -204,7 +204,7 @@ "description": "Certificates data to be configured or modified into VNFC instance. Shall be present if delegation-mode is used. Otherwise it shall be absent.\n", "type": "array", "items": { - "description": "This type provides input information related to subject of certificate.\nNOTE : Either set of ΓÇ£privatekeyΓÇ¥ and ΓÇ£certificateFileΓÇ¥ or ΓÇ£keystoreFileΓÇ¥ but not both shall be present.\n", + "description": "This type provides input information related to subject of certificate.\nNOTE : Either set of \"privatekey\" and \"certificateFile\" or \"keystoreFile\" but not both shall be present.\n", "type": "object", "properties": { "privateKey": { diff --git a/SOL002/VNFConfiguration-API/schemas/vnfConfiguration.schema.json b/SOL002/VNFConfiguration-API/schemas/vnfConfiguration.schema.json index 2b95e232..7c3e9fe1 100644 --- a/SOL002/VNFConfiguration-API/schemas/vnfConfiguration.schema.json +++ b/SOL002/VNFConfiguration-API/schemas/vnfConfiguration.schema.json @@ -195,7 +195,7 @@ "description": "Certificates data to be configured or modified into VNFC instance. Shall be present if delegation-mode is used. Otherwise it shall be absent.\n", "type": "array", "items": { - "description": "This type provides input information related to subject of certificate.\nNOTE : Either set of ΓÇ£privatekeyΓÇ¥ and ΓÇ£certificateFileΓÇ¥ or ΓÇ£keystoreFileΓÇ¥ but not both shall be present.\n", + "description": "This type provides input information related to subject of certificate.\nNOTE : Either set of \"privatekey\" and \"certificateFile\" or \"keystoreFile\" but not both shall be present.\n", "type": "object", "properties": { "privateKey": { -- GitLab