diff --git a/src/SOL005/APIVersion/APIVersion.yaml b/src/SOL005/APIVersion/APIVersion.yaml index ec432b993f53827d0a2a69118ddd6d8826cdb682..8f6218498d5efdc34bb97bfb0fea2def8c697455 100644 --- a/src/SOL005/APIVersion/APIVersion.yaml +++ b/src/SOL005/APIVersion/APIVersion.yaml @@ -3,10 +3,14 @@ openapi: 3.0.2 info: title: SOL005 - API version interface description: | - SOL005 - API version Interface IMPORTANT: Please note that this file might be not aligned to the current version of - the ETSI Group Specification it refers to and has not been approved by the ETSI NFV ISG. In case of discrepancies the - published ETSI Group Specification takes precedence. + SOL005 - API version Interface + + IMPORTANT: Please note that this file might be not aligned to the current + version of the ETSI Group Specification it refers to. In case of + discrepancies the published ETSI Group Specification takes precedence. + Please report bugs to Please report bugs to https://forge.etsi.org/rep/nfv/SOL005/issues + contact: name: NFV-SOL WG license: @@ -15,8 +19,8 @@ info: version: 1.0.0-impl:etsi.org:ETSI_NFV_OpenAPI:1 externalDocs: - description: ETSI GS NFV-SOL 005 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.03.01_60/gs_nfv-sol005v030301p.pdf + description: ETSI GS NFV-SOL 005 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.05.01_60/gs_nfv-sol005v030501p.pdf servers: - url: http://127.0.0.1/ diff --git a/src/SOL005/NFVICapacityInformation/NFVICapacityInformation.yaml b/src/SOL005/NFVICapacityInformation/NFVICapacityInformation.yaml index 01d262a0be1547c409485ac334a7afd125f29d7b..991ec9b65d1496b4f44e0fe8d0941c614dbad1f0 100644 --- a/src/SOL005/NFVICapacityInformation/NFVICapacityInformation.yaml +++ b/src/SOL005/NFVICapacityInformation/NFVICapacityInformation.yaml @@ -4,10 +4,13 @@ info: title: SOL005 - NFVI Capacity Information Interface description: | SOL005 - NFVI Capacity Information Interface - IMPORTANT: Please note that this file might be not aligned to the current version of the ETSI Group Specification it - refers to and has not been approved by the ETSI NFV ISG. In case of discrepancies the published ETSI Group Specification - takes precedence. + + IMPORTANT: Please note that this file might be not aligned to the current + version of the ETSI Group Specification it refers to. In case of + discrepancies the published ETSI Group Specification takes precedence. + Please report bugs to https://forge.etsi.org/rep/nfv/SOL005/issues + contact: name: NFV-SOL WG license: @@ -16,8 +19,8 @@ info: version: 1.0.0-impl:etsi.org:ETSI_NFV_OpenAPI:1 externalDocs: - description: ETSI GS NFV-SOL 005 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.03.01_60/gs_nfv-sol005v030301p.pdf + description: ETSI GS NFV-SOL 005 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.05.01_60/gs_nfv-sol005v030501p.pdf servers: - url: http://127.0.0.1/nfvici/v1 @@ -32,9 +35,8 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization get: - summary: Query NFVI capacity information description: | - The API consumer can use this method to retrieve information about NFVI capacity information. + The API consumer can use this method to retrieve information about NFVI capacity information. See clause 10.4.2.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/filter - $ref: ../components/SOL005_params.yaml#/components/parameters/all_fields @@ -45,7 +47,7 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept responses: "200": - $ref: '#/components/responses/NfviCapacityInfos.Get' + $ref: '#/components/responses/NfviCapacityInfos.Get.200' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -71,15 +73,14 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization get: - summary: Query NFVI capacity information for a specific VIM description: | - The API consumer can use this method for reading an individual VIM’s NFVI capacity information. + The API consumer can use this method for reading an individual VIM's NFVI capacity information. See clause 10.4.3.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/filter - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept responses: "200": - $ref: '#/components/responses/NfviCapacityInfo.Get' + $ref: '#/components/responses/NfviCapacityInfo.Get.200' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -104,17 +105,15 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization get: - summary: Query NFVI capacity thresholds description: | - This resource represents NFVI capacity thresholds. - The API consumer can use this resource to create and query NFVI capacity thresholds. + The API consumer can use this method to query information about NFVI capacity thresholds. See clause 10.4.4.3.2 parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/filter - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/nextpage_opaque_marker responses: "200": - $ref: '#/components/responses/CapacityThresholds.Get' + $ref: '#/components/responses/CapacityThresholds.Get.200' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -135,11 +134,8 @@ paths: $ref: ../responses/SOL005_resp.yaml#/components/responses/504 post: - summary: Create a NFVI capacity threshold description: | - The POST method creates a new NFVI capacity threshold. - As a result of successfully executing this method, a new "Individual capacity threshold" resource as defined - in clause 10.4.5 shall have been created. + The POST method creates a new NFVI capacity threshold. See clause 10.4.4.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType @@ -147,7 +143,7 @@ paths: $ref: '#/components/requestBodies/NfviCapacityThresholdRequest' responses: "201": - $ref: '#/components/responses/CapacityThresholds.Post' + $ref: '#/components/responses/CapacityThresholds.Post.201' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -161,7 +157,7 @@ paths: "406": $ref: ../responses/SOL005_resp.yaml#/components/responses/406 "422": - $ref: ../responses/SOL005_resp.yaml#/components/responses/422 + $ref: '#/components/responses/CapacityThresholds.Post.422' "500": $ref: ../responses/SOL005_resp.yaml#/components/responses/500 "503": @@ -175,16 +171,13 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization get: - summary: Query Individual NFVI capacity threshold description: | - The API consumer can use this method for reading information about an NFVI capacity threshold. - This method shall follow the provisions specified in the tables 10.4.5.3.2-1 and 10.4.5.3.2-2 for URI query - parameters, request and response data structures, and response codes. + The API consumer can use this method for reading information about an NFVI capacity threshold. See clause 10.4.5.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept responses: "200": - $ref: '#/components/responses/IndividualCapacityThreshold.Get' + $ref: '#/components/responses/IndividualCapacityThreshold.Get.200' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -205,16 +198,13 @@ paths: $ref: ../responses/SOL005_resp.yaml#/components/responses/504 patch: - summary: Modify an "Individual capacity threshold" resource description: | - This method iallows to modify an "Individual capacity threshold" resource. - This method shall follow the provisions specified in the Tables 10.4.5.3.4-1 and 10.4.5.3.4-2 for URI query - parameters, request and response data structures, and response codes. + This method allows to modify an "Individual capacity threshold" resource. See clause 10.4.5.3.4. requestBody: $ref: '#/components/requestBodies/IndividualNfviCapacityThresholdRequest' responses: "200": - $ref: '#/components/responses/IndividualCapacityThreshold.Patch' + $ref: '#/components/responses/IndividualCapacityThreshold.Patch.200' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -228,147 +218,9 @@ paths: "406": $ref: ../responses/SOL005_resp.yaml#/components/responses/406 "412": - $ref: ../responses/SOL005_resp.yaml#/components/responses/412 - "422": - $ref: ../responses/SOL005_resp.yaml#/components/responses/422 - "500": - $ref: ../responses/SOL005_resp.yaml#/components/responses/500 - "503": - $ref: ../responses/SOL005_resp.yaml#/components/responses/503 - "504": - $ref: ../responses/SOL005_resp.yaml#/components/responses/504 - - delete: - summary: Delete an NFVI capacity threshold - description: | - This method allows to delete an NFVI capacity threshold. - As a result of successfully executing this method, the "Individual capacity threshold" resource shall not exist - any longer. - responses: - "204": - $ref: '#/components/responses/IndividualCapacityThreshold.Delete' - "400": - $ref: ../responses/SOL005_resp.yaml#/components/responses/400 - "401": - $ref: ../responses/SOL005_resp.yaml#/components/responses/401 - "403": - $ref: ../responses/SOL005_resp.yaml#/components/responses/403 - "404": - $ref: ../responses/SOL005_resp.yaml#/components/responses/404 - "405": - $ref: ../responses/SOL005_resp.yaml#/components/responses/405 - "406": - $ref: ../responses/SOL005_resp.yaml#/components/responses/406 - "500": - $ref: ../responses/SOL005_resp.yaml#/components/responses/500 - "503": - $ref: ../responses/SOL005_resp.yaml#/components/responses/503 - "504": - $ref: ../responses/SOL005_resp.yaml#/components/responses/504 - - /subscriptions: - parameters: - - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization - get: - summary: Query multiple subscriptions. - description: | - The API consumer can use this method to query the list of active subscriptions to NFVI capacity information - notifications subscribed by the API consumer. - parameters: - - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - - $ref: ../components/SOL005_params.yaml#/components/parameters/filter - - $ref: ../components/SOL005_params.yaml#/components/parameters/nextpage_opaque_marker - responses: - "200": - $ref: '#/components/responses/NfviCiSubscriptions.Get' - "400": - $ref: ../responses/SOL005_resp.yaml#/components/responses/400 - "401": - $ref: ../responses/SOL005_resp.yaml#/components/responses/401 - "403": - $ref: ../responses/SOL005_resp.yaml#/components/responses/403 - "404": - $ref: ../responses/SOL005_resp.yaml#/components/responses/404 - "405": - $ref: ../responses/SOL005_resp.yaml#/components/responses/405 - "406": - $ref: ../responses/SOL005_resp.yaml#/components/responses/406 - "500": - $ref: ../responses/SOL005_resp.yaml#/components/responses/500 - "503": - $ref: ../responses/SOL005_resp.yaml#/components/responses/503 - "504": - $ref: ../responses/SOL005_resp.yaml#/components/responses/504 - - post: - summary: Create an NFVI capacity subscription - description: | - The POST method creates a new subscription. - This method shall follow the provisions specified in the Tables 10.4.6.3.1-1 and 10.4.6.3.1-2 for URI query - parameters, request and response data structures, and response codes. - parameters: - - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType - requestBody: - $ref: '#/components/requestBodies/NfviCapacitySubscriptionRequest' - responses: - "201": - $ref: '#/components/responses/NfviCiSubscriptions.Post' - "303": - $ref: ../responses/SOL005_resp.yaml#/components/responses/303 - "400": - $ref: ../responses/SOL005_resp.yaml#/components/responses/400 - "401": - $ref: ../responses/SOL005_resp.yaml#/components/responses/401 - "403": - $ref: ../responses/SOL005_resp.yaml#/components/responses/403 - "404": - $ref: ../responses/SOL005_resp.yaml#/components/responses/404 - "405": - $ref: ../responses/SOL005_resp.yaml#/components/responses/405 - "406": - $ref: ../responses/SOL005_resp.yaml#/components/responses/406 + $ref: '#/components/responses/IndividualCapacityThreshold.Patch.412' "422": - $ref: ../responses/SOL005_resp.yaml#/components/responses/422 - "500": - $ref: ../responses/SOL005_resp.yaml#/components/responses/500 - "503": - $ref: ../responses/SOL005_resp.yaml#/components/responses/503 - "504": - $ref: ../responses/SOL005_resp.yaml#/components/responses/504 - callbacks: - CapacityShortageNotification: - $ref: '#/components/callbacks/CapacityShortageNotification' - - - /subscriptions/{subscriptionId}: - parameters: - - $ref: '#/components/parameters/SubscriptionId' - - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization - get: - summary: Read an individual subscription resource - description: | - The API consumer can use this method for reading an individual subscription about NFVI capacity information - notifications subscribed by the API consumer. - parameters: - - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - responses: - "200": - $ref: '#/components/responses/NfviCiSubscription.Get' - "400": - $ref: ../responses/SOL005_resp.yaml#/components/responses/400 - "401": - $ref: ../responses/SOL005_resp.yaml#/components/responses/401 - "403": - $ref: ../responses/SOL005_resp.yaml#/components/responses/403 - "404": - $ref: ../responses/SOL005_resp.yaml#/components/responses/404 - "405": - $ref: ../responses/SOL005_resp.yaml#/components/responses/405 - "406": - $ref: ../responses/SOL005_resp.yaml#/components/responses/406 + $ref: '#/components/responses/IndividualCapacityThreshold.Patch.422' "500": $ref: ../responses/SOL005_resp.yaml#/components/responses/500 "503": @@ -377,14 +229,11 @@ paths: $ref: ../responses/SOL005_resp.yaml#/components/responses/504 delete: - summary: Terminate a subscription. description: | - This method terminates an individual subscription. - This method shall follow the provisions specified in the Tables 10.4.7.3.5-1 and 10.4.7.3.5-2 for URI query - parameters, request and response data structures, and response codes. + This method allows to delete an NFVI capacity threshold. See clause 10.4.5.3.5. responses: "204": - $ref: '#/components/responses/NfviCiSubscription.Delete' + $ref: '#/components/responses/IndividualCapacityThreshold.Delete.204' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -433,20 +282,6 @@ components: schema: type: string - SubscriptionId: - name: subscriptionId - in: path - description: | - Identifier of the subscription. - This identifier can be retrieved from the resource referenced by the "Location" HTTP header in the response to a - POST request creating a new subscription resource. It can also be retrieved from the "id" attribute in the payload - body of that response. - required: true - style: simple - explode: false - schema: - type: string - requestBodies: NfviCapacityThresholdRequest: description: | @@ -467,27 +302,8 @@ components: $ref: ./definitions/NFVICapacityInformation_def.yaml#/components/schemas/CapacityThresholdModifications required: true - NfviCapacitySubscriptionRequest: - description: | - Details of the subscription to be created. - content: - application/json: - schema: - $ref: ./definitions/NFVICapacityInformation_def.yaml#/components/schemas/NfviCapacityInfoSubscriptionRequest - required: true - - CapacityShortageNotificationRequest: - description: | - Notification about the available NFVI capacity having crossed below a threshold value or having re-covered from - a capacity shortage. - content: - application/json: - schema: - $ref: ./definitions/NFVICapacityInformation_def.yaml#/components/schemas/CapacityShortageNotification - required: true - responses: - NfviCapacityInfos.Get: + NfviCapacityInfos.Get.200: description: | Shall be returned when information about NFVI capacity information has been queried successfully. The response body shall contain NFVI capacity information, as defined in clause 10.5.2.4. @@ -524,7 +340,7 @@ components: items: $ref: ./definitions/NFVICapacityInformation_def.yaml#/components/schemas/NfviCapacityInfo - NfviCapacityInfo.Get: + NfviCapacityInfo.Get.200: description: | Shall be returned when information of an individual VIM’s NFVI capacity has been read successfully. The response body shall contain a representation of the NFVI capacity information, as defined in clause 10.5.2.4. @@ -555,7 +371,7 @@ components: schema: $ref: ./definitions/NFVICapacityInformation_def.yaml#/components/schemas/NfviCapacityInfo - CapacityThresholds.Get: + CapacityThresholds.Get.200: description: | Shall be returned when information about zero or more capacity thresholds has been queried successfully. If the "filter" URI parameter was supplied in the request, the data in the response body shall have been @@ -593,7 +409,7 @@ components: items: $ref: ./definitions/NFVICapacityInformation_def.yaml#/components/schemas/CapacityThreshold - CapacityThresholds.Post: + CapacityThresholds.Post.201: description: | Shall be returned when a capacity threshold has been created successfully. The response body shall contain a representation of the created "Individual capacity threshold" resource, @@ -626,10 +442,17 @@ components: schema: $ref: ./definitions/NFVICapacityInformation_def.yaml#/components/schemas/CapacityThreshold - IndividualCapacityThreshold.Get: + CapacityThresholds.Post.422: description: | - Shall be returned when information about an individual capacity threshold has been read successfully. - The response body shall contain in a representation of the capacity threshold, as defined in clause 10.5.2.8. + 422 UNPROCESSABLE ENTITY + + Shall be returned upon the following error: The content type of the payload body is supported and the payload + body of a request contains syntactically correct data but the data cannot be processed. + The general cause for this error and its handling is specified in clause 6.4 of ETSI GS NFV-SOL 013 [16], + including rules for the presence of the response body. + Specifically in case of this resource, the response code 422 shall also be returned if the NFVO has tested + the Notification endpoint as described in clause 10.4.6.3.2 and the test has failed. + In this case, the "detail" attribute in the "ProblemDetails" structure shall convey more information about the error. headers: Version: description: | @@ -655,13 +478,12 @@ components: content: application/json: schema: - $ref: ./definitions/NFVICapacityInformation_def.yaml#/components/schemas/CapacityThreshold + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" - IndividualCapacityThreshold.Patch: + IndividualCapacityThreshold.Get.200: description: | - 200 OK - Shall be returned when the request has been processed successfully. - The response body shall contain a data structure of type "CapacityThresholdModifications". + Shall be returned when information about an individual capacity threshold has been read successfully. + The response body shall contain in a representation of the capacity threshold, as defined in clause 10.5.2.8. headers: Version: description: | @@ -687,46 +509,13 @@ components: content: application/json: schema: - $ref: ./definitions/NFVICapacityInformation_def.yaml#/components/schemas/CapacityThresholdModifications - - IndividualCapacityThreshold.Delete: - description: | - Shall be returned when the NFVI capacity threshold has been deleted successfully. - The response body shall be empty. - headers: - Version: - description: | - Version of the API used in the response. - style: simple - explode: false - schema: - type: string - WWW-Authenticate: - description: | - Challenge if the corresponding HTTP request has not provided authorization, or error details if the - corresponding HTTP request has provided an invalid authorization token. - style: simple - explode: false - schema: - type: string - Content-Type: - description: The MIME type of the body of the response. - style: simple - explode: false - schema: - type: string - content: {} + $ref: ./definitions/NFVICapacityInformation_def.yaml#/components/schemas/CapacityThreshold - NfviCiSubscriptions.Get: + IndividualCapacityThreshold.Patch.200: description: | - Shall be returned when the list of subscriptions has been queried successfully. - The response body shall contain in an array the representations of all active subscriptions of the functional - block that invokes the method, i.e. zero or more representations of NFVI capacity information subscriptions, - as defined in clause 10.5.2.9. - If the "filter" URI parameter was supplied in the request, the data in the response body shall have been - transformed according to the rules specified in clause 5.2.2 of ETSI GS NFV-SOL 013. - If the NFVO supports alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS NFV SOL 013 for this resource, - inclusion of the Link HTTP header in this response shall follow the provisions in clause 5.4.2.3 of ETSI GS NFV SOL 013. + 200 OK + Shall be returned when the request has been processed successfully. + The response body shall contain a data structure of type "CapacityThresholdModifications". headers: Version: description: | @@ -752,17 +541,16 @@ components: content: application/json: schema: - type: array - items: - $ref: ./definitions/NFVICapacityInformation_def.yaml#/components/schemas/NfviCapacityInfoSubscription + $ref: ./definitions/NFVICapacityInformation_def.yaml#/components/schemas/CapacityThresholdModifications - NfviCiSubscriptions.Post: + IndividualCapacityThreshold.Patch.412: description: | - Shall be returned when the subscription has been created successfully. - A representation of the created subscription resource shall be returned in the response body, as defined in - clause 10.5.2.9. - The HTTP response shall include a "Location" HTTP header that contains the resource URI of the created subscription - resource. + 412 PRECONDITION FAILED + + A precondition given in an HTTP request header is not fulfilled. + Typically, this is due to an ETag mismatch, indicating that the resource was modified by another entity. + The response body should contain a ProblemDetails structure, in which the "detail" attribute should convey + more information about the error headers: Version: description: | @@ -785,15 +573,18 @@ components: explode: false schema: type: string - content: - application/json: - schema: - $ref: ./definitions/NFVICapacityInformation_def.yaml#/components/schemas/NfviCapacityInfoSubscription - NfviCiSubscription.Get: + IndividualCapacityThreshold.Patch.422: description: | - Shall be returned when the subscription has been read successfully. - The response body shall contain a representation of the subscription resource, as defined in clause 10.5.2.9. + 422 UNPROCESSABLE ENTITY + + content type of the payload body is supported and the payload body of a request contains syntactically + correct data but the data cannot be processed. + The general cause for this error and its handling is specified in clause 6.4 of ETSI GS NFV-SOL 013 [16], + including rules for the presence of the response body. + Specifically in case of this resource, the response code 422 shall also be returned if the NFVO has tested + the Notification endpoint as described in clause 10.4.6.3.2 and the test has failed. + In this case, the "detail" attribute in the "ProblemDetails" structure shall convey more information about the error. headers: Version: description: | @@ -819,66 +610,11 @@ components: content: application/json: schema: - $ref: ./definitions/NFVICapacityInformation_def.yaml#/components/schemas/NfviCapacityInfoSubscription + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" - NfviCiSubscription.Delete: + IndividualCapacityThreshold.Delete.204: description: | - Shall be returned when the subscription resource has been deleted successfully. - The response body shall be empty. - headers: - Version: - description: | - Version of the API used in the response. - style: simple - explode: false - schema: - type: string - WWW-Authenticate: - description: | - Challenge if the corresponding HTTP request has not provided authorization, or error details if the - corresponding HTTP request has provided an invalid authorization token. - style: simple - explode: false - schema: - type: string - Content-Type: - description: The MIME type of the body of the response. - style: simple - explode: false - schema: - type: string - content: {} - - CapacityShortageNotification.Post: - description: | - Shall be returned when the notification has been delivered successfully. - headers: - Version: - description: | - Version of the API used in the response. - style: simple - explode: false - schema: - type: string - WWW-Authenticate: - description: | - Challenge if the corresponding HTTP request has not provided authorization, or error details if the - corresponding HTTP request has provided an invalid authorization token. - style: simple - explode: false - schema: - type: string - Content-Type: - description: The MIME type of the body of the response. - style: simple - explode: false - schema: - type: string - content: {} - - CapacityShortageNotification.Get: - description: | - Shall be returned to indicate that the notification endpoint has been tested successfully. + Shall be returned when the NFVI capacity threshold has been deleted successfully. The response body shall be empty. headers: Version: @@ -903,76 +639,3 @@ components: schema: type: string content: {} - - callbacks: - CapacityShortageNotification: - '{$request.body#/callbackUri}': - description: >- - This resource represents a notification endpoint for NFVI capacity information. - The API producer can use this resource to send notifications related to log management events to a - subscribed API consumer, which has provided the URI of this resource during the capacity threshold - creation process. - post: - description: >- - The POST method delivers a notification regarding an NFVI capacity information event from the API producer - to an API consumer. The API consumer shall have previously created an "Individual capacity threshold" resource" - parameters: - - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization - requestBody: - $ref: "#/components/requestBodies/CapacityShortageNotificationRequest" - responses: - "204": - $ref: '#/components/responses/CapacityShortageNotification.Post' - "400": - $ref: ../responses/SOL005_resp.yaml#/components/responses/400 - "401": - $ref: ../responses/SOL005_resp.yaml#/components/responses/401 - "403": - $ref: ../responses/SOL005_resp.yaml#/components/responses/403 - "404": - $ref: ../responses/SOL005_resp.yaml#/components/responses/404 - "405": - $ref: ../responses/SOL005_resp.yaml#/components/responses/405 - "406": - $ref: ../responses/SOL005_resp.yaml#/components/responses/406 - "422": - $ref: ../responses/SOL005_resp.yaml#/components/responses/422 - "500": - $ref: ../responses/SOL005_resp.yaml#/components/responses/500 - "503": - $ref: ../responses/SOL005_resp.yaml#/components/responses/503 - "504": - $ref: ../responses/SOL005_resp.yaml#/components/responses/504 - - get: - description: >- - The GET method allows the API producer to test the notification endpoint that is provided by the API consumer, - e.g. during creation of the capacity threshold resource. - parameters: - - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization - responses: - "204": - $ref: '#/components/responses/CapacityShortageNotification.Get' - "400": - $ref: ../responses/SOL005_resp.yaml#/components/responses/400 - "401": - $ref: ../responses/SOL005_resp.yaml#/components/responses/401 - "403": - $ref: ../responses/SOL005_resp.yaml#/components/responses/403 - "404": - $ref: ../responses/SOL005_resp.yaml#/components/responses/404 - "405": - $ref: ../responses/SOL005_resp.yaml#/components/responses/405 - "406": - $ref: ../responses/SOL005_resp.yaml#/components/responses/406 - "422": - $ref: ../responses/SOL005_resp.yaml#/components/responses/422 - "500": - $ref: ../responses/SOL005_resp.yaml#/components/responses/500 - "503": - $ref: ../responses/SOL005_resp.yaml#/components/responses/503 - "504": - $ref: ../responses/SOL005_resp.yaml#/components/responses/504 \ No newline at end of file diff --git a/src/SOL005/NFVICapacityInformation/definitions/NFVICapacityInformation_def.yaml b/src/SOL005/NFVICapacityInformation/definitions/NFVICapacityInformation_def.yaml index 75885475e1e35a0861438f6311c545023d3d1b34..0416e51cc672c91137076f718d5873763b8930c2 100644 --- a/src/SOL005/NFVICapacityInformation/definitions/NFVICapacityInformation_def.yaml +++ b/src/SOL005/NFVICapacityInformation/definitions/NFVICapacityInformation_def.yaml @@ -37,6 +37,10 @@ components: type: object description: | This type represents a capacity threshold. It shall comply with the provisions defined in table 10.5.2.8-1. + NOTE 1: The "objectInstanceId" aims to identify the "Individual VIM's NFVI capacity information", which is + associated to a VIM instance. + NOTE 2: The "subObjectInstanceIds" aim to identify the resource zones in which the available NFVI capacity + crosses a threshold value. required: - id - objectInstanceId @@ -50,12 +54,13 @@ components: $ref: ../../definitions/SOL005_def.yaml#/definitions/Identifier objectInstanceId: description: | - Identifier of the VIM instance associated with the capacity threshold. + Identifier of the VIM instance associated with the capacity threshold. See note 1. $ref: ../../definitions/SOL005_def.yaml#/definitions/Identifier subObjectInstanceIds: description: | Identifiers of the sub-object instances of the measured object instance associate with this capacity threshold. If this attribute is absent, measurements are taken for all sub-object instances of the measured object instance. + See note 2. type: array items: $ref: ../../definitions/SOL005_def.yaml#/definitions/IdentifierInVim @@ -119,158 +124,17 @@ components: This attribute shall only be present if the API consumer requires authorization of notifications. $ref: ../../definitions/SOL005_def.yaml#/definitions/SubscriptionAuthentication - NfviCapacityInfoSubscription: - type: object - description: | - This type represents a subscription. It shall comply with the provisions defined in Table 10.5.2.9-1. - required: - - id - - callbackUri - - _links - properties: - id: - description: | - Identifier that identifies the subscription. - $ref: ../../definitions/SOL005_def.yaml#/definitions/Identifier - filter: - description: | - Filter settings for this subscription, to define the subset of all notifications this subscription relates to. - A particular notification is sent to the subscriber if the filter matches, or if there is no filter. - $ref: '#/components/schemas/NfviCapacityInfoNotificationsFilter' - callbackUri: - description: | - The URI of the endpoint to send the notification to. - $ref: ../../definitions/SOL005_def.yaml#/definitions/Uri - _links: - type: object - description: | - Links to resources related to this resource. - required: - - self - properties: - self: - description: | - URI of this resource. - $ref: ../../definitions/SOL005_def.yaml#/definitions/Link - - NfviCapacityInfoSubscriptionRequest: - type: object - description: | - This type represents a subscription request. It shall comply with the provisions defined in Table 10.5.2.2-1. - required: - - callbackUri - properties: - filter: - description: | - Filter settings for this subscription, to define the subset of all notifications this subscription relates to. - A particular notification is sent to the subscriber if the filter matches, or if there is no filter. - $ref: '#/components/schemas/NfviCapacityInfoNotificationsFilter' - callbackUri: - description: | - The URI of the endpoint to send the notification to. - $ref: ../../definitions/SOL005_def.yaml#/definitions/Uri - authentication: - description: | - Authentication parameters to configure the use of authorization when sending notifications corresponding to - this subscription, as defined in clause 8.3.4 of ETSI GS NFV SOL 013. - This attribute shall only be present if the subscriber requires authorization of notifications. - $ref: ../../definitions/SOL005_def.yaml#/definitions/SubscriptionAuthentication - - CapacityShortageNotification: - type: object - description: | - This notification informs the receiver that the available NFVI capacity has crossed below a threshold value or - has re-covered from a capacity shortage. It shall comply with the provisions defined in Table 10.5.2.10-1. - required: - - id - - notificationType - - thresholdId - - timeStamp - - direction - - capacityInformation - - objectInstanceId - properties: - id: - description: | - Identifier of this notification. If a notification is sent multiple times due to multiple subscriptions, - the "id" attribute of all these notifications shall have the same value. - $ref: ../../definitions/SOL005_def.yaml#/definitions/Identifier - notificationType: - description: | - Discriminator for the different notification types. - Shall be set to "CapacityShortageNotification" for this notification type. - type: string - thresholdId: - description: | - Identifier of the threshold which has been crossed - $ref: ../../definitions/SOL005_def.yaml#/definitions/Identifier - timeStamp: - description: | - Date and time of the generation of the notification. - $ref: ../../definitions/SOL005_def.yaml#/definitions/DateTime - objectInstanceId: - description: | - Identifies the VIM’s NFVI capacity information instance (measured object instance) in which the available - NFVI capacity has crossed a threshold value. - $ref: ../../definitions/SOL005_def.yaml#/definitions/Identifier - subObjectInstanceId: - description: | - Identifier of the sub-object of the measured object to which the measurement applies. - Refer to the definition of the "CapacityThreshold" in clause 10.5.2.7. - $ref: ../../definitions/SOL005_def.yaml#/definitions/IdentifierInVim - direction: - description: | - Specifies if the threshold has been crossed in UP or DOWN direction. - type: string - enum: - - UP - - DOWN - capacityInformation: - description: | - Information about the available, reserved, allocated/used, and total capacity of the NFVI. - If the threshold creation process does specify a resource zone and/or vimId, the information is provided - for the resource zone/vimId where the NFVI capacity has crossed the thresholdas indicated by the - "subObjectInstanceId" and "objectInstanceId" attributes. - $ref: "#/components/schemas/NfviCapacityMeasurement" - _links: - description: | - Links to resources related to this notification. - type: object - required: - - threshold - properties: - objectInstance: - description: | - Link to the resource representing the measured object instance to which the notified change applies. - Shall be present if the measured object instance information is accessible as a resource. - $ref: ../../definitions/SOL005_def.yaml#/definitions/NotificationLink - threshold: - description: | - Link to the resource that represents the threshold that was crossed. - $ref: ../../definitions/SOL005_def.yaml#/definitions/NotificationLink - - NfviCapacityInfoNotificationsFilter: - type: object - description: | - This type represents a filter that can be used to subscribe for notifications related to NFVI capacity information events. - It shall comply with the provisions defined in Table 10.5.3.2-1. - properties: - notificationTypes: - description: | - Match particular notification types. - Permitted values: - - CapacityShortageNotification - type: array - items: - type: string - enum: - - CapacityShortageNotification - CapacityThresholdCriteria: type: object description: | This type represents criteria that define a capacity threshold. It shall comply with the provisions defined in table 10.5.3.3-1. + NOTE 1: In the present document, simple thresholds are defined. + The definition of additional threshold types is left for future specification. + NOTE 2: The hysteresis is defined to prevent storms of threshold crossing + notifications. When processing a request to create a threshold, implementations + should enforce a suitable minimum value for this attribute (e.g. override the + value or reject the request). required: - capacityMetric - thresholdType @@ -312,8 +176,7 @@ components: Type of capacity threshold. This attribute determines which other attributes are present in the data structure. Permitted values: - SIMPLE: Single-valued static threshold. - In the present document, simple thresholds are defined. The definition of additional threshold types is left - for future specification. + See note 1. type: string enum: - SIMPLE @@ -338,9 +201,7 @@ components: A notification with crossing direction "UP" will be generated if the measured value reaches or exceeds "thresholdValue" + "hysteresis". A notification with crossing direction "DOWN" will be generated if the measured value reaches or undercuts "thresholdValue" - "hysteresis". - The hysteresis is defined to prevent storms of threshold crossing notifications. - When processing a request to create a threshold, implementations should enforce a suitable minimum - value for this attribute (e.g. override the value or reject the request). + See note 2. type: number NfviCapacityInfoPerZone: @@ -366,21 +227,20 @@ components: type: object description: | This type defines the format of a time interval. The type shall comply with the provisions defined in table 10.5.2.7-1. + NOTE: When only the startTime is present, there is no time interval being defined, and therefore the provided timing + information refers to a specific point in time. required: - aTime properties: aTime: description: | - First date and time of the interval. - When only the startTime is present, there is no time interval being defined, and therefore the provided timing - information refers to a specific point in time. + First date and time of the interval. See note. $ref: ../../definitions/SOL005_def.yaml#/definitions/DateTime bTime: description: | Second date and time of the interval. Shall be present when a time interval is provided, and absent otherwise. When provided, the bTime shall be greater than aTime. - When only the startTime is present, there is no time interval being defined, and therefore the provided timing - information refers to a specific point in time. + See note. $ref: ../../definitions/SOL005_def.yaml#/definitions/DateTime NfviCapacityMeasurement: @@ -388,6 +248,8 @@ components: description: | This type defines the format of the NFVI capacity information on a per resource type basis. The type shall comply with the provisions defined in table 10.5.2.6-1. + NOTE: The present document and referred documents do not specify the capacity measurements, + thus the capacity measurement names are not specified in the present document version. required: - resourceType - capacityMeasurementName @@ -403,8 +265,7 @@ components: description: | Name of the capacity measurement. Different resource types can have different associated capacity measurements, typically associated to different sub-types of the resource type. - The present document and referred documents do not specify the capacity measurements, thus the capacity - measurement names are not specified in the present document version. + See note. type: string totalCapacity: description: | @@ -441,17 +302,19 @@ components: CapacityThresholdModifications: description: | This type represents modifications to a capacity threshold. It shall comply with the provisions defined in table 10.5.2.8-1. + NOTE: At least one of the attributes defined in this type shall be present in request bodies. type: object properties: callbackUri: description: | New value of the "callbackUri" attribute. The value "null" is not permitted. - At least one of the attributes defined in this type shall be present in request bodies. + See note. $ref: ../../definitions/SOL005_def.yaml#/definitions/Uri authentication: description: | New value of the "authentication" attribute, or "null" to remove the attribute. If present in a request body, these modifications shall be applied according to the rules of JSON Merge Patch (see IETF RFC 7396). + This attribute shall not be present in response bodies. - At least one of the attributes defined in this type shall be present in request bodies. + See note. $ref: ../../definitions/SOL005_def.yaml#/definitions/SubscriptionAuthentication \ No newline at end of file diff --git a/src/SOL005/NFVICapacityInformationNotification/NFVICapacityInformationNotification.yaml b/src/SOL005/NFVICapacityInformationNotification/NFVICapacityInformationNotification.yaml new file mode 100644 index 0000000000000000000000000000000000000000..64705cb1ff945e77743aef74a59ce8c36824897b --- /dev/null +++ b/src/SOL005/NFVICapacityInformationNotification/NFVICapacityInformationNotification.yaml @@ -0,0 +1,147 @@ +openapi: 3.0.2 + +info: + title: SOL005 - NFVI Capacity Information Notification Interface + description: | + SOL005 - NFVI Capacity Information Notification Interface + + IMPORTANT: Please note that this file might be not aligned to the current + version of the ETSI Group Specification it refers to. In case of + discrepancies the published ETSI Group Specification takes precedence. + + Please report bugs to https://forge.etsi.org/rep/nfv/SOL005/issues + + contact: + name: NFV-SOL WG + license: + name: ETSI Forge copyright notice + url: https://forge.etsi.org/etsi-forge-copyright-notice.txt + version: 1.0.0-impl:etsi.org:ETSI_NFV_OpenAPI:1 + +externalDocs: + description: ETSI GS NFV-SOL 005 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.05.01_60/gs_nfv-sol005v030501p.pdf + +servers: + - url: http://127.0.0.1/callback/v1 + - url: https://127.0.0.1/callback/v1 + +paths: + ############################################################################### + # Notification endpoint NsdOnBoardingNotification # + ############################################################################### + /URI_is_provided_by_the_client_when_creating_the_subscription-CapacityShortageNotification: + parameters: + - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization + - $ref: ../components/SOL005_params.yaml#/components/parameters/Version + - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept + + post: + description: | + The POST method delivers a notification regarding an NFVI capacity information event from the API producer to + an API consumer. The API consumer shall have previously created an "Individual capacity threshold" resource. + See clause 10.4.6.3.1. + parameters: + - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType + requestBody: + $ref: '#/components/requestBodies/CapacityShortageNotification' + responses: + 204: + $ref: '#/components/responses/CapacityShortageNotification.Post.204' + 400: + $ref: "../responses/SOL005_resp.yaml#/components/responses/400" + 401: + $ref: "../responses/SOL005_resp.yaml#/components/responses/401" + 403: + $ref: "../responses/SOL005_resp.yaml#/components/responses/403" + 404: + $ref: "../responses/SOL005_resp.yaml#/components/responses/404" + 405: + $ref: "../responses/SOL005_resp.yaml#/components/responses/405" + 406: + $ref: "../responses/SOL005_resp.yaml#/components/responses/406" + 500: + $ref: "../responses/SOL005_resp.yaml#/components/responses/500" + 503: + $ref: "../responses/SOL005_resp.yaml#/components/responses/503" + + get: + description: | + The GET method allows the API producer to test the notification endpoint that is provided by the API consumer, + e.g. during creation of the capacity threshold resource. See clause 10.4.6.3.2. + responses: + 204: + $ref: '#/components/responses/CapacityShortageNotification.Get.204' + 400: + $ref: "../responses/SOL005_resp.yaml#/components/responses/400" + 401: + $ref: "../responses/SOL005_resp.yaml#/components/responses/401" + 403: + $ref: "../responses/SOL005_resp.yaml#/components/responses/403" + 404: + $ref: "../responses/SOL005_resp.yaml#/components/responses/404" + 405: + $ref: "../responses/SOL005_resp.yaml#/components/responses/405" + 406: + $ref: "../responses/SOL005_resp.yaml#/components/responses/406" + 500: + $ref: "../responses/SOL005_resp.yaml#/components/responses/500" + 503: + $ref: "../responses/SOL005_resp.yaml#/components/responses/503" + +components: + requestBodies: + CapacityShortageNotification: + description: | + A notification about the successful on-boarding of an NSD. + content: + application/json: + schema: + $ref: "definitions/SOL005NFVICapacityInformationNotification_def.yaml#/components/schemas/CapacityShortageNotification" + required: true + + responses: + CapacityShortageNotification.Post.204: + description: | + 204 NO CONTENT + + Shall be returned when the notification has been delivered successfully. + headers: + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + + CapacityShortageNotification.Get.204: + description: | + 204 NO CONTENT + + Shall be returned when the notification endpoint has been tested successfully. + The response body shall be empty. + headers: + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string diff --git a/src/SOL005/NFVICapacityInformationNotification/definitions/SOL005NFVICapacityInformationNotification_def.yaml b/src/SOL005/NFVICapacityInformationNotification/definitions/SOL005NFVICapacityInformationNotification_def.yaml new file mode 100644 index 0000000000000000000000000000000000000000..8537dab2808fafb09ba1174ae5d18cc36893c689 --- /dev/null +++ b/src/SOL005/NFVICapacityInformationNotification/definitions/SOL005NFVICapacityInformationNotification_def.yaml @@ -0,0 +1,77 @@ +# Copyright (c) ETSI 2017. +# https://forge.etsi.org/etsi-forge-copyright-notice.txt +components: + schemas: + CapacityShortageNotification: + type: object + description: | + This notification informs the receiver that the available NFVI capacity has crossed below a threshold value or + has re-covered from a capacity shortage. It shall comply with the provisions defined in Table 10.5.2.10-1. + NOTE: Refer to the definition of the "CapacityThreshold" in clause 10.5.2.7 + required: + - id + - notificationType + - thresholdId + - timeStamp + - direction + - capacityInformation + - objectInstanceId + properties: + id: + description: | + Identifier of this notification. If a notification is sent multiple times due to multiple subscriptions, + the "id" attribute of all these notifications shall have the same value. + $ref: ../../definitions/SOL005_def.yaml#/definitions/Identifier + notificationType: + description: | + Discriminator for the different notification types. + Shall be set to "CapacityShortageNotification" for this notification type. + type: string + thresholdId: + description: | + Identifier of the threshold which has been crossed + $ref: ../../definitions/SOL005_def.yaml#/definitions/Identifier + timeStamp: + description: | + Date and time of the generation of the notification. + $ref: ../../definitions/SOL005_def.yaml#/definitions/DateTime + objectInstanceId: + description: | + Identifies the VIM’s NFVI capacity information instance (measured object instance) in which the available + NFVI capacity has crossed a threshold value. See note. + $ref: ../../definitions/SOL005_def.yaml#/definitions/Identifier + subObjectInstanceId: + description: | + Identifier of the sub-object of the measured object to which the measurement applies. + Refer to the definition of the "CapacityThreshold" in clause 10.5.2.7. + $ref: ../../definitions/SOL005_def.yaml#/definitions/IdentifierInVim + direction: + description: | + Specifies if the threshold has been crossed in UP or DOWN direction. + type: string + enum: + - UP + - DOWN + capacityInformation: + description: | + Information about the available, reserved, allocated/used, and total capacity of the NFVI. + If the threshold creation process does specify a resource zone and/or vimId, the information is provided + for the resource zone/vimId where the NFVI capacity has crossed the thresholdas indicated by the + "subObjectInstanceId" and "objectInstanceId" attributes. + $ref: ../../NFVICapacityInformation/definitions/NFVICapacityInformation_def.yaml#/components/schemas/NfviCapacityMeasurement + _links: + description: | + Links to resources related to this notification. + type: object + required: + - threshold + properties: + objectInstance: + description: | + Link to the resource representing the measured object instance to which the notified change applies. + Shall be present if the measured object instance information is accessible as a resource. + $ref: ../../definitions/SOL005_def.yaml#/definitions/NotificationLink + threshold: + description: | + Link to the resource that represents the threshold that was crossed. + $ref: ../../definitions/SOL005_def.yaml#/definitions/NotificationLink \ No newline at end of file diff --git a/src/SOL005/NSDManagement/NSDManagement.yaml b/src/SOL005/NSDManagement/NSDManagement.yaml index 928780342a6a76b3ac77164d0b00f5b03746818e..657db1345ccd79a11b97f88b9ca99c24577acf66 100644 --- a/src/SOL005/NSDManagement/NSDManagement.yaml +++ b/src/SOL005/NSDManagement/NSDManagement.yaml @@ -6,20 +6,21 @@ info: SOL005 - NSD Management Interface IMPORTANT: Please note that this file might be not aligned to the current - version of the ETSI Group Specification it refers to and has not been - approved by the ETSI NFV ISG. In case of discrepancies the published ETSI - Group Specification takes precedence. + version of the ETSI Group Specification it refers to. In case of + discrepancies the published ETSI Group Specification takes precedence. + Please report bugs to https://forge.etsi.org/rep/nfv/SOL005/issues + contact: name: NFV-SOL WG license: name: ETSI Forge copyright notice url: https://forge.etsi.org/etsi-forge-copyright-notice.txt - version: 2.1.0-impl:etsi.org:ETSI_NFV_OpenAPI:1 + version: 2.2.0-impl:etsi.org:ETSI_NFV_OpenAPI:1 externalDocs: - description: ETSI GS NFV-SOL 005 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.03.01_60/gs_nfv-sol005v030301p.pdf + description: ETSI GS NFV-SOL 005 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.05.01_60/gs_nfv-sol005v030501p.pdf servers: - url: http://127.0.0.1/nsd/v2 @@ -43,9 +44,8 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept post: - summary: Create a new NS descriptor resource. description: | - The POST method is used to create a new NS descriptor resource. + The POST method is used to create a new NS descriptor resource. See clause 5.4.2.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType requestBody: @@ -73,9 +73,8 @@ paths: $ref: "../responses/SOL005_resp.yaml#/components/responses/504" get: - summary: Query information about multiple NS descriptor resources. description: | - The GET method queries information about multiple NS descriptor resources. + The GET method queries information about multiple NS descriptor resources. See clause 5.4.2.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/filter - $ref: ../components/SOL005_params.yaml#/components/parameters/all_fields @@ -116,9 +115,8 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version get: - summary: Read information about an individual NS descriptor resource. description: | - The GET method reads information about an individual NS descriptor. + The GET method reads information about an individual NS descriptor. See clause 5.4.3.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept responses: @@ -144,17 +142,9 @@ paths: $ref: "../responses/SOL005_resp.yaml#/components/responses/504" patch: - summary: Modify the operational state and/or the user defined data of an individual NS descriptor resource. description: | The PATCH method modifies the operational state and/or user defined data of an individual NS descriptor resource. - This method can be used to: - 1) Enable a previously disabled individual NS descriptor resource, allowing again its use for instantiation of new - network service with this descriptor. The usage state (i.e. "IN_USE/NOT_IN_USE") shall not change as a - result. - 2) Disable a previously enabled individual NS descriptor resource, preventing any further use for instantiation of - new network service(s) with this descriptor. The usage state (i.e. "IN_USE/NOT_IN_USE") shall not change - as a result. - 3) Modify the user defined data of an individual NS descriptor resource. + See clause 5.4.3.3.4. requestBody: $ref: '#/components/requestBodies/NsdInfoModifications' responses: @@ -173,22 +163,9 @@ paths: 406: $ref: "../responses/SOL005_resp.yaml#/components/responses/406" 409: - # description: | - # 409 CONFLICT - - # Error: The operation cannot be executed currently, - # due to a conflict with the state of the resource. - # Typically, this is due to an operational state - # mismatch, i.e. enable an already enabled or - # disable an already disabled individual NS - # descriptor resource, or the "nsdOnboardingState" - # is not ONBOARDED. - # The response body shall contain a ProblemDetails - # structure, in which the "detail" attribute shall convey - # more information about the error. - $ref: "../responses/SOL005_resp.yaml#/components/responses/409" + $ref: '#/components/responses/IndividualNSDescriptor.Patch.409' 412: - $ref: "../responses/SOL005_resp.yaml#/components/responses/412" + $ref: '#/components/responses/IndividualNSDescriptor.Patch.412' 500: $ref: "../responses/SOL005_resp.yaml#/components/responses/500" 503: @@ -197,12 +174,8 @@ paths: $ref: "../responses/SOL005_resp.yaml#/components/responses/504" delete: - summary: Delete an individual NS descriptor resource. description: | - The DELETE method deletes an individual NS descriptor resource. - An individual NS descriptor resource can only be deleted when there is no NS instance using it (i.e. usageState = - NOT_IN_USE) and has been disabled already (i.e. operationalState = DISABLED). Otherwise, the DELETE method - shall fail. + The DELETE method deletes an individual NS descriptor resource. See clause 5.4.3.3.5. responses: 204: $ref: '#/components/responses/IndividualNSDescriptor.Delete.204' @@ -219,20 +192,7 @@ paths: 406: $ref: "../responses/SOL005_resp.yaml#/components/responses/406" 409: - # description: | - # 409 CONFLICT - - # Error: The operation cannot be executed currently, - # due to a conflict with the state of the resource. - # Typically, this is due to the fact the NS descriptor - # resource is in the enabled operational state (i.e. - # operationalState = ENABLED) or there are running - # NS instances using the concerned individual NS - # descriptor resource (i.e. usageState = IN_USE). - # The response body shall contain a ProblemDetails - # structure, in which the "detail" attribute shall convey - # more information about the error. - $ref: "../responses/SOL005_resp.yaml#/components/responses/409" + $ref: '#/components/responses/IndividualNSDescriptor.Delete.409' 500: $ref: "../responses/SOL005_resp.yaml#/components/responses/500" 503: @@ -251,22 +211,8 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version get: - summary: Fetch the content of a NSD. - description: | - The GET method fetches the content of the NSD archive. - The NSD archive is implemented as a single zip file. - The content of the NSD archive is provided as onboarded, - i.e. depending on the security option used, the CSAR wrapped - in a ZIP archive together with an external signature is returned, - as defined in clause 5.1 of ETSI GS NFV-SOL 007. - - NOTE: Information about the applicable security option can be - obtained by evaluating the "archiveSecurityOption" - attribute in the "nsdInfo" structure. - - This method shall follow the provisions specified in the T - ables 5.4.4.3.2-1 and 5.4.4.3.2-2 for URI query parameters, - request and response data structures, and response codes. + description: | + The GET method fetches the content of the NSD archive. See clause 5.4.4.3.2. parameters: - $ref: '#/components/parameters/AcceptTextOrZip' - $ref: ../components/SOL005_params.yaml#/components/parameters/Range @@ -274,19 +220,7 @@ paths: 200: $ref: '#/components/responses/NsdArchiveContent.Get.200' 206: - # description: | - # 206 PARTIAL CONTENT - - # On success, if the NFVO supports range requests, - # a single consecutive byte range from the content of - # the NSD file is returned. - # The response body shall contain the requested part - # of the NSD file. - # The "Content-Range" HTTP header shall be - # provided according to IETF RFC 7233. - # The "Content-Type" HTTP header shall be set as - # defined above for the "200 OK" response. - $ref: "../responses/SOL005_resp.yaml#/components/responses/206" + $ref: '#/components/responses/NsdArchiveContent.Get.206' 400: $ref: "../responses/SOL005_resp.yaml#/components/responses/400" 401: @@ -297,42 +231,10 @@ paths: $ref: "../responses/SOL005_resp.yaml#/components/responses/404" 405: $ref: "../responses/SOL005_resp.yaml#/components/responses/405" - 406: - # description: | - # 406 NOT ACCEPTABLE - - # If the "Accept" header does not contain at least one - # name of a content type for which the NFVO can - # provide a representation of the NSD, the NFVO - # shall respond with this response code. - # The "ProblemDetails" structure may be included - # with the "detail" attribute providing more information - # about the error. - $ref: "../responses/SOL005_resp.yaml#/components/responses/406" 409: - # description: | - # 409 CONFLICT - - # Shall be returned upon the following error: The - # operation cannot be executed currently, due to a - # conflict with the state of the resource. - # Typically, this is due to the fact - # "nsdOnboardingState" has a value different from - # ONBOARDED. - # The response body shall contain a ProblemDetails - # structure, in which the "detail" attribute shall convey - # more information about the error. - $ref: "../responses/SOL005_resp.yaml#/components/responses/409" + $ref: '#/components/responses/NsdArchiveContent.Get.409' 416: - # description: | - # 416 RANGE NOT SATISFIABLE - - # The byte range passed in the "Range" header did - # not match any available byte range in the NSD file - # (e.g. "access after end of file"). - # The response body may contain a ProblemDetails - # structure. - $ref: "../responses/SOL005_resp.yaml#/components/responses/416" + $ref: '#/components/responses/NsdArchiveContent.Get.416' 500: $ref: "../responses/SOL005_resp.yaml#/components/responses/500" 503: @@ -341,13 +243,8 @@ paths: $ref: "../responses/SOL005_resp.yaml#/components/responses/504" put: - summary: Upload the content of a NSD. description: | - The PUT method is used to upload the content of an NSD archive. - The NSD to be uploaded is implemented as a single ZIP file as defined in clause 5.4.4.3.2. - The "Content-Type" HTTP header in the PUT request shall be set to "application/zip". - This method shall follow the provisions specified in the Tables 5.4.4.3.3-1 and - 5.4.4.3.3-2 for URI query parameters, request and response data structures, and response codes. + The PUT method is used to upload the content of an NSD archive. See clause 5.4.4.3.3. parameters: - $ref: '#/components/parameters/ContentTypeZip' responses: @@ -368,18 +265,7 @@ paths: 406: $ref: "../responses/SOL005_resp.yaml#/components/responses/406" 409: - # description: | - # 409 CONFLICT - # - # Error: The operation cannot be executed currently, - # due to a conflict with the state of the resource. - # Typically, this is due to the fact that the - # NsdOnboardingState has a value other than - # CREATED. - # The response body shall contain a ProblemDetails - # structure, in which the "detail" attribute shall convey - # more information about the error. - $ref: "../responses/SOL005_resp.yaml#/components/responses/409" + $ref: '#/components/responses/NsdArchiveContent.Put.409' 500: $ref: "../responses/SOL005_resp.yaml#/components/responses/500" 503: @@ -399,42 +285,7 @@ paths: get: description: | - The GET method reads the content of the NSD within an NSD archive. - The NSD can be implemented as a single file or as a collection of - multiple files. If the NSD is implemented in the form of multiple files, - a ZIP file embedding these files shall be returned. If the NSD is implemented - as a single file, either that file or a ZIP file embedding that file shall be returned. - The selection of the format is controlled by the "Accept" HTTP header passed in the GET request: - • If the "Accept" header contains only "text/plain" and the NSD is implemented as a single file, - the file shall be returned; otherwise, an error message shall be returned. - • If the "Accept" header contains only "application/zip", the single file or - the multiple files that make up the NSD shall be returned embedded in a ZIP file. - • If the "Accept" header contains both "text/plain" and "application/zip", it is up - to the NFVO to choose the format to return for a single-file NSD; for a multi-file NSD, - a ZIP file shall be returned. - The default format of the ZIP file shall comply with the CSAR format as specified in ETSI GS NFV-SOL 007 - where only the YAML files representing the NSD, and information necessary to navigate - the ZIP file and to identify the file that is the entry point for parsing the NSD and - (if requested) further security information are included and other artifacts referenced from the YAML files are excluded. This means that the content - of the ZIP archive shall contain the following files from the NSD archive: - • TOSCA.meta (if available in the NSD archive); - • The main TOSCA definitions YAML file (either as referenced by the Entry-Definitions keyword from TOSCA.meta or available as a - file with the extension ".yml" or ".yaml" from the root of the archive); - • Other TOSCA YAML files, if any, as referenced by the Other-Definitions keyword from TOSCA.meta; - • Every component of the NSD referenced (recursively) from the theYAML files as mentioned above; - NOTE 1: For a NSD based on TOSCA, it includes all the imported type definition files as indicated - in the top level the main service template and in any of the lower level service template if it - has any as described in ETSI GS NFV-SOL 001. - NOTE 2: For a NSD based on YANG, it includes the file as indicated by the "yang_definitions" - keyname in the metadata section of the main yaml file as described in ETSI GS NFV-SOL 007. - • The related security information, if the "include_signatures" URI parameter is provided, as follows: - - the manifest file; - - the singleton certificate file in the root of the NSD archive (if available in the NSD archive); - - the signing certificates of the individual files included in the ZIP archive - (if available in the NSD archive); - - the signatures of the individual files (if available in the NSD archive). - This method shall follow the provisions specified in the Tables 5.4.4a.3.2-1 and 5.4.4a.3.2-2 for - URI query parameters, request and response data structures, and response codes. + The GET method reads the content of the NSD within an NSD archive. See clause 5.4.4a.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/include_signatures - $ref: '#/components/parameters/AcceptTextOrZip' @@ -452,9 +303,9 @@ paths: 405: $ref: "../responses/SOL005_resp.yaml#/components/responses/405" 406: - $ref: "../responses/SOL005_resp.yaml#/components/responses/406" + $ref: '#/components/responses/NSD.Get.406' 409: - $ref: "../responses/SOL005_resp.yaml#/components/responses/409" + $ref: '#/components/responses/NSD.Get.409' 500: $ref: "../responses/SOL005_resp.yaml#/components/responses/500" 503: @@ -473,12 +324,8 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version get: - summary: Fetch the content of the manifest in an NSD archive. description: | - The GET method reads the content of the manifest file within an NSD archive. - This method shall follow the provisions specified in the Tables 5.4.4b.3.2-1 - and 5.4.4b.3.2-2 for URI query parameters, request and response data structures, - and response codes. + The GET method reads the content of the manifest file within an NSD archive. See clasue 5.4.4b.3.2. parameters: - $ref: '#/components/parameters/AcceptTextOrZip' - $ref: ../components/SOL005_params.yaml#/components/parameters/include_signatures @@ -496,19 +343,7 @@ paths: 405: $ref: "../responses/SOL005_resp.yaml#/components/responses/405" 409: - # description: | - # 409 CONFLICT - - # Shall be returned upon the following error: The - # operation cannot be executed currently, due to a - # conflict with the state of the resource. - # Typically, this is due to the fact - # "nsdOnboardingState" has a value different from - # ONBOARDED. - # The response body shall contain a ProblemDetails - # structure, in which the "detail" attribute shall convey - # more information about the error. - $ref: "../responses/SOL005_resp.yaml#/components/responses/409" + $ref: '#/components/responses/NsdArchiveManifest.Get.409' 500: $ref: "../responses/SOL005_resp.yaml#/components/responses/500" 503: @@ -520,7 +355,7 @@ paths: # Individual NSD Archive Artifact # ############################################################################### /ns_descriptors/{nsdInfoId}/artifacts/{artifactPath}: - #ETSI GS NFV-SOL 005 V3.3.1 location: 5.4.4c + #ETSI GS NFV-SOL 005 V3.5.1 location: 5.4.4c parameters: - $ref: '#/components/parameters/NsdInfoId' - $ref: '#/components/parameters/ArtifactPathInNSD' @@ -528,12 +363,7 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version get: description: | - The GET method fetches the content of an individual artifact within - a NSD archive. - - This method shall follow the provisions specified in the Tables 5.4.4c.3.2-1 - and 5.4.4c.3.2-2 for URI query parameters, request and response data structures, - and response codes. + The GET method fetches the content of an individual artifact within an NSD archive. See clause 5.4.4c.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Range - $ref: ../components/SOL005_params.yaml#/components/parameters/include_signatures @@ -551,34 +381,13 @@ paths: 404: $ref: "../responses/SOL005_resp.yaml#/components/responses/404" 406: - # description: | - # If the related request contained an "Accept" header not compatible with the Content type - # "application/zip" but the "include_signatures" flag was provided, the NFVO shall respond - # with this response code. - - # The "ProblemDetails" structure may be included with the "detail" attribute providing more - # information about the error. - $ref: "../responses/SOL005_resp.yaml#/components/responses/405" + $ref: '#/components/responses/IndividualNsdArchiveArtifact.Get.406' 405: $ref: "../responses/SOL005_resp.yaml#/components/responses/406" 409: - # description: | - # Shall be returned upon the following error: The operation cannot be executed currently, - # due to a conflict with the state of the resource. - - # Typically, this is due to the fact that "nsdOnboardingState" has a value different from - # "ONBOARDED". - - # The response body shall contain a ProblemDetails structure, in which the "detail" attribute - # shall convey more information about the error. - $ref: "../responses/SOL005_resp.yaml#/components/responses/409" + $ref: '#/components/responses/IndividualNsdArchiveArtifact.Get.409' 416: - # description: | - # The byte range passed in the "Range" header did not match any available byte range in the - # artifact file (e.g. "access after end of file"). - - # The response body may contain a ProblemDetails structure. - $ref: "../responses/SOL005_resp.yaml#/components/responses/416" + $ref: '#/components/responses/IndividualNsdArchiveArtifact.Get.416' 500: $ref: "../responses/SOL005_resp.yaml#/components/responses/500" 503: @@ -596,9 +405,8 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version post: - summary: Create a new PNF descriptor resource. description: | - The POST method is used to create a new PNF descriptor resource + The POST method is used to create a new PNF descriptor resource. See clause 5.4.5.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType @@ -627,10 +435,8 @@ paths: $ref: "../responses/SOL005_resp.yaml#/components/responses/504" get: - summary: Query information about multiple PNF descriptor resources. description: | - "The GET method queries information about multiple PNF descriptor - resources." + The GET method queries information about multiple PNF descriptor resources. See clause 5.4.5.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/filter - $ref: ../components/SOL005_params.yaml#/components/parameters/all_fields @@ -669,9 +475,8 @@ paths: - $ref: '#/components/parameters/PnfdInfoId' get: - summary: Read an individual PNFD resource. description: | - The GET method reads information about an individual PNF descriptor. + The GET method reads information about an individual PNF descriptor. See clause 5.4.6.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization @@ -699,9 +504,8 @@ paths: $ref: "../responses/SOL005_resp.yaml#/components/responses/504" patch: - summary: Modify the user defined data of an individual PNF descriptor resource. description: | - The PATCH method modifies the user defined data of an individual PNF descriptor resource. + The PATCH method modifies the user defined data of an individual PNF descriptor resource. See clause 5.4.6.3.4. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType @@ -723,7 +527,7 @@ paths: 406: $ref: "../responses/SOL005_resp.yaml#/components/responses/406" 412: - $ref: "../responses/SOL005_resp.yaml#/components/responses/412" + $ref: '#/components/responses/IndividualPnfDescriptor.Patch.412' 500: $ref: "../responses/SOL005_resp.yaml#/components/responses/500" 503: @@ -732,20 +536,8 @@ paths: $ref: "../responses/SOL005_resp.yaml#/components/responses/504" delete: - summary: Delete an individual PNF descriptor resource. - description: | - The DELETE method deletes an individual PNF descriptor resource. - An individual PNF descriptor resource can only be deleted when t - here is no NS instance using it or there is NSD referencing it. - To delete all PNFD versions identified by a particular value of - the "pnfdInvariantId" attribute, the procedure is to first use t - he GET method with filter "pnfdInvariantId" towards the PNF - descriptors resource to find all versions of the PNFD. Then, - he API consumer uses the DELETE method described in this clause - to delete each PNFD version individually. - This method shall follow the provisions specified in the Tables - 5.4.6.3.5-1 and 5.4.6.3.5-2 for URI query parameters, request - and response data structures, and response codes. + description: | + The DELETE method deletes an individual PNF descriptor resource. See clause 5.4.6.3.5. responses: 204: $ref: '#/components/responses/IndividualPnfDescriptor.Delete.200' @@ -779,20 +571,8 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version get: - summary: Fetch the content of a PNFD. description: | - The GET method fetches the content of the PNFD archive. - The content of the PNFD archive is provided as onboarded, - i.e. depending on the security option used, the CSAR or - the CSAR wrapped in a ZIP archive together with an external - signature is returned, as defined in clause 5.1 of ETSI GS NFV-SOL 004. - - NOTE: Information about the applicable security option can be obtained - by evaluating the "archiveSecurityOption" attribute in the "pnfdInfo" structure. - - This method shall follow the provisions specified in the Tables 5.4.7.3.2-1 - and 5.4.7.3.2-2 for URI query parameters, request and response data structures, - and response codes. + The GET method fetches the content of the PNFD archive. See clause 5.4.7.3.2. parameters: - $ref: '#/components/parameters/AcceptText' - $ref: ../components/SOL005_params.yaml#/components/parameters/Range @@ -814,20 +594,9 @@ paths: 406: $ref: "../responses/SOL005_resp.yaml#/components/responses/406" 409: - # description: | - # 409 CONFLICT - - # Shall be returned upon the following error: The - # operation cannot be executed currently, due to a - # conflict with the state of the resource. - # Typically, this is due to the fact pnfdOnboardingState - # has a value different from ONBOARDED. - # The response body shall contain a ProblemDetails - # structure, in which the "detail" attribute shall convey - # more information about the error. - $ref: "../responses/SOL005_resp.yaml#/components/responses/409" + $ref: '#/components/responses/PnfdArchiveContent.Get.409' 416: - $ref: "../responses/SOL005_resp.yaml#/components/responses/416" + $ref: '#/components/responses/PnfdArchiveContent.Get.416' 500: $ref: "../responses/SOL005_resp.yaml#/components/responses/500" 503: @@ -836,11 +605,8 @@ paths: $ref: "../responses/SOL005_resp.yaml#/components/responses/504" put: - summary: Upload the content of a PNFD. description: | - The PUT method is used to upload the content of a PNFD archive. - This resource represents the content of the individual PNF descriptor, i.e. PNFD content. - The client can use this resource to upload and download the content of the PNFD. + The PUT method is used to upload the content of a PNFD archive. See clause 5.4.7.3.3. parameters: - $ref: '#/components/parameters/AcceptText' - $ref: '#/components/parameters/ContentTypeZip' @@ -862,18 +628,7 @@ paths: 406: $ref: "../responses/SOL005_resp.yaml#/components/responses/406" 409: - # description: | - # 409 CONFLICT - - # Error: The operation cannot be executed currently, - # due to a conflict with the state of the resource. - # Typically, this is due to the fact that the - # PnfdOnboardingState has a value other than - # CREATED. - # The response body shall contain a ProblemDetails - # structure, in which the "detail" attribute shall convey - # more information about the error. - $ref: "../responses/SOL005_resp.yaml#/components/responses/409" + $ref: '#/components/responses/PnfdArchiveContent.Put.409' 500: $ref: "../responses/SOL005_resp.yaml#/components/responses/500" 503: @@ -891,45 +646,7 @@ paths: get: description: | - The GET method reads the content of the PNFD within a PNFD archive. - The PNFD can be implemented as a single file or as a collection of - multiple files. If the PNFD is implemented in the form of multiple - files, a ZIP file embedding these files shall be returned. If the - PNFD is implemented as a single file, either that file or a ZIP file - embedding that file shall be returned. - The selection of the format is controlled by the "Accept" HTTP header - passed in the GET request: - • If the "Accept" header contains only "text/plain" and the PNFD is - implemented as a single file, the file shall be returned; otherwise, - an error message shall be returned. - • If the "Accept" header contains only "application/zip", the single - file or the multiple files that make up the PNFD shall be returned - embedded in a ZIP file. - • If the "Accept" header contains both "text/plain" and "application/zip", - it is up to the NFVO to choose the format to return for a single-file PNFD; - for a multi-file PNFD, a ZIP file shall be returned. - The default format of the ZIP file shall be the one specified in ETSI GS - NFV-SOL 004 where only the YAML files representing the PNFD, and information - necessary to navigate the ZIP file and to identify the file that is the entry - point for parsing the PNFD and (if requested) further security information - are included. This means that the content of the ZIP archive shall contain - the following files from the PNFD archive: - • TOSCA.meta (if available in the PNFD archive); - • the main service template (either as referenced from TOSCA.meta or - available as a file with the extension ".yml" or ".yaml" from the - root of the archive); - • every component of the PNFD referenced (recursively) from the main - service template; - • the related security information, if the "include_signatures" URI - parameter is provided, as follows: - - the manifest file; - - the singleton certificate file in the root of the PNFD archive - (if available in the PNFD archive); - - the signing certificates of the individual files included in the - ZIP archive (if available in the PNFD archive); - - the signatures of the individual files (if available in the PNFD archive). - This method shall follow the provisions specified in the Tables 5.4.7a.3.2-1 and - 5.4.7a.3.2-2 for URI query parameters, request and response data structures, and response codes. + The GET method reads the content of the PNFD within a PNFD archive. See clause 5.4.7a.3.2. parameters: - $ref: '#/components/parameters/AcceptText' - $ref: ../components/SOL005_params.yaml#/components/parameters/Range @@ -948,9 +665,9 @@ paths: 405: $ref: "../responses/SOL005_resp.yaml#/components/responses/405" 406: - $ref: "../responses/SOL005_resp.yaml#/components/responses/406" + $ref: '#/components/responses/PNFD.Get.406' 409: - $ref: "../responses/SOL005_resp.yaml#/components/responses/409" + $ref: '#/components/responses/PNFD.Get.409' 500: $ref: "../responses/SOL005_resp.yaml#/components/responses/500" 503: @@ -970,10 +687,7 @@ paths: get: description: | - The GET method reads the content of the manifest file within a PNFD archive. - This method shall follow the provisions specified in the Tables 5.4.7b.3.2-1 - and 5.4.7b.3.2-2 for URI query parameters, request and response data structures, - and response codes. + The GET method reads the content of the manifest file within a PNFD archive. See clause 5.4.7b.3.2. parameters: - $ref: '#/components/parameters/AcceptTextOrZip' - $ref: ../components/SOL005_params.yaml#/components/parameters/include_signatures @@ -993,7 +707,7 @@ paths: 406: $ref: "../responses/SOL005_resp.yaml#/components/responses/406" 409: - $ref: "../responses/SOL005_resp.yaml#/components/responses/409" + $ref: '#/components/responses/PnfdArchiveManifest.Get.409' 500: $ref: "../responses/SOL005_resp.yaml#/components/responses/500" 503: @@ -1005,7 +719,7 @@ paths: # Individual PNFD Archive Artifact # ############################################################################### /pnf_descriptors/{pnfdInfoId}/artifacts/{artifactPath}: - #ETSI GS NFV-SOL 005 V3.3.1 location: 5.4.7c + #ETSI GS NFV-SOL 005 V3.5.1 location: 5.4.7c parameters: - $ref: '#/components/parameters/PnfdInfoId' - $ref: '#/components/parameters/ArtifactPathInPNFD' @@ -1014,11 +728,7 @@ paths: get: description: | - The GET method fetches the content of an individual artifact within a PNFD archive. - - This method shall follow the provisions specified in the Tables 5.4.7c.3.2-1 and - 5.4.7c.3.2-2 for URI query parameters, request and response data structures, and - response codes. + The GET method fetches the content of an individual artifact within a PNFD archive. See clause 5.4.7c.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Range - $ref: ../components/SOL005_params.yaml#/components/parameters/include_signatures @@ -1036,34 +746,11 @@ paths: 404: $ref: "../responses/SOL005_resp.yaml#/components/responses/404" 406: - # description: | - # If the related request contained an "Accept" header not compatible with the Content type - # "application/zip" but the "include_signatures" flag was provided, the NFVO shall respond - # with this response code. - - # The "ProblemDetails" structure may be included with the "detail" attribute providing more - # information about the error. - $ref: "../responses/SOL005_resp.yaml#/components/responses/405" - 405: - $ref: "../responses/SOL005_resp.yaml#/components/responses/406" + $ref: '#/components/responses/IndividualPnfdArchiveArtifact.Get.406' 409: - # description: | - # Shall be returned upon the following error: The operation cannot be executed currently, - # due to a conflict with the state of the resource. - - # Typically, this is due to the fact that "pnfdOnboardingState" has a value different from - # "ONBOARDED". - - # The response body shall contain a ProblemDetails structure, in which the "detail" attribute - # shall convey more information about the error. - $ref: "../responses/SOL005_resp.yaml#/components/responses/409" + $ref: '#/components/responses/IndividualPnfdArchiveArtifact.Get.409' 416: - # description: | - # The byte range passed in the "Range" header did not match any available byte range in the - # artifact file (e.g. "access after end of file"). - - # The response body may contain a ProblemDetails structure. - $ref: "../responses/SOL005_resp.yaml#/components/responses/416" + $ref: '#/components/responses/IndividualPnfdArchiveArtifact.Get.416' 500: $ref: "../responses/SOL005_resp.yaml#/components/responses/500" 503: @@ -1081,22 +768,8 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version post: - summary: Subscribe to NSD and PNFD change notifications. - description: | - The POST method creates a new subscription. - This method shall support the URI query parameters, request and - response data structures, and response codes, as specified in - the Tables 5.4.8.3.1-1 and 5.4.8.3.1-2. - Creation of two subscription resources with the same callback URI - and the same filter can result in performance degradation and will - provide duplicates of notifications to the OSS, and might make - sense only in very rare use cases. Consequently, the NFVO may - either allow creating a subscription resource if another subscription - resource with the same filter and callback URI already exists (in which - case it shall return the "201 Created" response code), or may decide to - not create a duplicate subscription resource (in which case it shall - return a "303 See Other" response code referencing the existing - subscription resource with the same filter and callbackUricallback URI). + description: | + The POST method creates a new subscription. See clause 5.4.8.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType @@ -1106,18 +779,7 @@ paths: 201: $ref: '#/components/responses/Subscriptions.Post.201' 303: - # description: | - # 303 SEE OTHER - - # Shall be returned when a subscription with the - # same callbackURI and the same filter already - # exits and the policy of the NFVO is to not create - # redundant subscriptions. - # The HTTP response shall include a "Location" - # HTTP header that contains the resource URI of - # the existing subscription resource. - # The response body shall be empty. - $ref: "../responses/SOL005_resp.yaml#/components/responses/303" + $ref: '#/components/responses/Subscriptions.Post.303' 400: $ref: "../responses/SOL005_resp.yaml#/components/responses/400" 401: @@ -1131,7 +793,7 @@ paths: 406: $ref: "../responses/SOL005_resp.yaml#/components/responses/406" 422: - $ref: "../responses/SOL005_resp.yaml#/components/responses/422" + $ref: '#/components/responses/Subscriptions.Post.422' 500: $ref: "../responses/SOL005_resp.yaml#/components/responses/500" 503: @@ -1140,14 +802,9 @@ paths: $ref: "../responses/SOL005_resp.yaml#/components/responses/504" get: - summary: Query multiple subscriptions. - description: | - TThe GET method queries the list of active subscriptions of the - functional block that invokes the method. It can be used e.g. - for resynchronization after error situations. - This method shall support the URI query parameters, request and - response data structures, and response codes, as specified in - the Tables 5.4.8.3.2-1 and 5.4.8.3.2-2. + description: | + The GET method queries the list of active subscriptions of the functional block that invokes the method. + It can be used e.g. for resynchronization after error situations. See clause 5.4.8.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/filter - $ref: ../components/SOL005_params.yaml#/components/parameters/nextpage_opaque_marker @@ -1185,17 +842,9 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version get: - summary: Read an individual subscription resource. description: | - This resource represents an individual subscription. - It can be used by the client to read and to terminate a subscription to - notifications related to NSD management. - - The GET method retrieves information about a subscription by reading - an individual subscription resource. - This resource represents an individual subscription. - It can be used by the client to read and to terminate a subscription to - notifications related to NSD management. + The GET method retrieves information about a subscription by reading an individual subscription resource. + See clause 5.4.9.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept responses: @@ -1221,16 +870,8 @@ paths: $ref: "../responses/SOL005_resp.yaml#/components/responses/504" delete: - summary: Terminate Subscription description: | - This resource represents an individual subscription. - It can be used by the client to read and to terminate a subscription to - notifications related to NSD management. - - The DELETE method terminates an individual subscription. - This method shall support the URI query parameters, request and - response data structures, and response codes, as - specified in the Table 5.4.9.3.3-2. + The DELETE method terminates an individual subscription. See clause 5.4.9.3.5. responses: 204: $ref: '#/components/responses/IndividualSubscription.Delete.204' @@ -1559,8 +1200,8 @@ components: 200 OK Shall be returned when the operation has been accepted and completed successfully. - The response body shall contain attribute modifications for an 'Individual NS Descriptor' - resource (see clause 5.5.2.6). + The response body shall contain attribute modifications for an 'Individual NS descriptor' + resource (see clause 5.5.2.1). headers: Content-Type: description: | @@ -1589,13 +1230,24 @@ components: schema: $ref: "definitions/SOL005NSDescriptorManagement_def.yaml#/definitions/NsdInfoModifications" - IndividualNSDescriptor.Delete.204: + IndividualNSDescriptor.Patch.409: description: | - 204 NO CONTENT + 409 CONFLICT - Shall be returned when the operation has completed successfully. - The response body shall be empty. + Shall be returned upon the following error: The operation cannot be executed currently, due to a conflict with + the state of the "Individual NS descriptor" resource. + Typically, this is due to an operational state mismatch, i.e. enable an already enabled or disable an already + disabled individual NS descriptor resource, or the "nsdOnboardingState" is not ONBOARDED. + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall convey more + information about the error. headers: + Content-Type: + description: | + The MIME type of the body of the request. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string WWW-Authenticate: description: | Challenge if the corresponding HTTP request has not provided authorization, or error details if the @@ -1611,22 +1263,20 @@ components: explode: false schema: type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" - NsdArchiveContent.Get.200: + IndividualNSDescriptor.Patch.412: description: | - 200 OK + 412 PRECONDITION FAILED - Shall be returned when the content of the NSD has been read successfully. - The payload body shall contain a copy of the ZIP file that contains the NSD file structure. - The "Content-Type" HTTP header shall be set to "application/zip". + Shall be returned upon the following error: A precondition given in an HTTP request header is not fulfilled. + Typically, this is due to an ETag mismatch, indicating that the resource was modified by another entity. + The response body should contain a ProblemDetails structure, in which the "detail" attribute should convey + more information about the error. headers: - Content-Type: - description: | - The MIME type of the body of the request. Reference: IETF RFC 7231 - style: simple - explode: false - schema: - type: string WWW-Authenticate: description: | Challenge if the corresponding HTTP request has not provided authorization, or error details if the @@ -1643,26 +1293,13 @@ components: schema: type: string - NsdArchiveContent.Put.202: + IndividualNSDescriptor.Delete.204: description: | - 202 ACCEPTED + 204 NO CONTENT - Shall be returned when the NSD archive has been accepted for uploading, - but the processing has not been completed. It is expected to take some - time for processing (asynchronous mode). + Shall be returned when the operation has completed successfully. The response body shall be empty. - The API consumer can track the uploading progress by receiving the - "NsdOnBoardingNotification" and "NsdOnBoardingFailureNotification" - from the NFVO or by reading the status of the individual NS descriptor - resource using the GET method. headers: - Content-Type: - description: | - The MIME type of the body of the request. Reference: IETF RFC 7231 - style: simple - explode: false - schema: - type: string WWW-Authenticate: description: | Challenge if the corresponding HTTP request has not provided authorization, or error details if the @@ -1679,14 +1316,25 @@ components: schema: type: string - NsdArchiveContent.Put.204: + IndividualNSDescriptor.Delete.409: description: | - 204 NO CONTENT + 409 CONFLICT - The NSD content successfully uploaded and - validated (synchronous mode). - The response body shall be empty. + Shall be returned upon the following error: The operation cannot be executed currently, due to a + conflict with the state of the resource. + Typically, this is due to the fact the NS descriptor resource is in the enabled operational state + (i.e. nsdOperationalState = ENABLED) or there are running NS instances using the concerned individual + NS descriptor resource (i.e. nsdUsageState = IN_USE). + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall + convey more information about the error. headers: + Content-Type: + description: | + The MIME type of the body of the request. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string WWW-Authenticate: description: | Challenge if the corresponding HTTP request has not provided authorization, or error details if the @@ -1702,17 +1350,18 @@ components: explode: false schema: type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" - NSD.Get.200: + NsdArchiveContent.Get.200: description: | 200 OK Shall be returned when the content of the NSD has been read successfully. - The payload body shall contain a copy of the file representing the NSD or - a ZIP file that contains the file or multiple files representing the NSD, - as specified above. - The "Content-Type" HTTP header shall be set according to the format of - the returned file. It shall be set to "text/plain" for a YAML file. + The payload body shall contain a copy of the ZIP file that contains the NSD file structure. + The "Content-Type" HTTP header shall be set to "application/zip". headers: Content-Type: description: | @@ -1737,22 +1386,16 @@ components: schema: type: string - NsdArchiveManifest.Get.200: + NsdArchiveContent.Get.206: description: | - 200 OK - - Shall be returned when the content of the manifest file has been read successfully. + 206 PARTIAL CONTENT - If the "include_signatures" URI query parameter was absent in the request, or if the - manifest file has all security-related information embedded (i.e. there is no separate - certificate file), the payload body shall contain a copy of the manifest file of the - NSD archive, and the "Content-Type" HTTP header shall be set to "text/plain". - If the "include_signatures" URI query parameter was present in the related request and - the manifest file does not have all the security-related information embedded (i.e. there - is a separate certificate file), the "Content-Type" HTTP header shall be set to "application/zip" - and the payload body shall contain a ZIP archive which includes: - - a copy of the manifest file of the NSD archive; - - a copy of the related individual certificate file. + If NFVO supports range requests, this response + shall be returned when a single consecutive byte range from the content of the NSD file has been read + successfully according to the request. + The response body shall contain the requested part of the NSD archive. + The "Content-Range" HTTP header shall be provided according to IETF RFC 7233 [10]. + The "Content-Type" HTTP header shall be set as defined above for the "200 OK" response. headers: Content-Type: description: | @@ -1776,26 +1419,22 @@ components: explode: false schema: type: string + Content-Range: + description: The Content-Range response HTTP header indicates where in a full body message a partial message belongs. + style: simple + explode: false + schema: + type: string - IndividualNsdArchiveArtifact.Get.200: + NsdArchiveContent.Get.409: description: | - 200 OK - - Shall be returned when the content of the artifact file has been read successfully. + 409 CONFLICT - If the "include_signatures" request URI parameter was not provided in the related request, - the payload body shall contain a copy of the artifact file from the NSD archive, as defined - by ETSI GS NFV-SOL 007, and the "Content-Type" HTTP header shall be set according to the - content type of the artifact file. If the artifact is encrypted, the header shall be set to - the value "application/cms" (IETF RFC 7193). - - If the content type cannot be determined, the header shall be set to the value - "application/octet-stream". If the "include_signatures" request URI parameter was provided - in the related request, the "Content-Type" HTTP header shall be set to "application/zip" - and the payload body shall contain a ZIP archive which includes: - - a copy of the artifact file from the VNF package, as defined by ETSI GS NFVSOL 007 - - the related security information (individual signature file and optional related individual - certificate file). + Shall be returned upon the following error: The operation cannot be executed currently, due to a conflict + with the state of the resource. + Typically, this is due to the fact "nsdOnboardingState" has a value different from ONBOARDED. + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall convey + more information about the error. headers: Content-Type: description: | @@ -1819,24 +1458,18 @@ components: explode: false schema: type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" - IndividualNsdArchiveArtifact.Get.206: + NsdArchiveContent.Get.416: description: | - 206 PARTIAL CONTENT - - If the NFVO supports range requests and the "include_signatures" request URI parameter was - not present in the related request, this response shall be returned when a single consecutive - byte range from the content of the artifact file has been read successfully according to the - request. - - The response body shall contain the requested part of the artifact file from the NSD archive, - as defined by ETSI GS NFV-SOL 007. - - The "Content-Type" HTTP header shall be set according to the content type of the artifact file. - If the content type cannot be determined, the header shall be set to the value - "application/octet-stream". + 416 RANGE NOT SATISFIABLE - The "Content-Range" HTTP header shall be provided according to IETF RFC 7233. + The byte range passed in the "Range" header did not match any available byte range in the NSD file + (e.g. "access after end of file"). + The response body may contain a ProblemDetails structure. headers: Content-Type: description: | @@ -1860,18 +1493,25 @@ components: explode: false schema: type: string + Content-Range: + description: The Content-Range response HTTP header indicates where in a full body message a partial message belongs. + style: simple + explode: false + schema: + type: string - PNFDescriptors.Post.201: + NsdArchiveContent.Put.202: description: | - 201 CREATED + 202 ACCEPTED - Shall be returned when a new "Individual PNF descriptor" - resource and the associated PNF descriptor identifier - has been created successfully. - The response body shall contain a representation of the - created PNF descriptor resource, as defined in clause 5.5.2.5. - The HTTP response shall include a "Location" HTTP header that - contains the resource URI of the created PNF descriptor resource. + Shall be returned when the NSD archive has been accepted for uploading, + but the processing has not been completed. It is expected to take some + time for processing (asynchronous mode). + The response body shall be empty. + The API consumer can track the uploading progress by receiving the + "NsdOnBoardingNotification" and "NsdOnBoardingFailureNotification" + from the NFVO or by reading the status of the individual NS descriptor + resource using the GET method. headers: Content-Type: description: | @@ -1895,30 +1535,41 @@ components: explode: false schema: type: string - content: - application/json: - schema: - $ref: "definitions/SOL005NSDescriptorManagement_def.yaml#/definitions/PnfdInfo" - PNFDescriptors.Get.200: + NsdArchiveContent.Put.204: description: | - 200 OK + 204 NO CONTENT - Shall be returned when information about zero or more PNF descriptors has - been queried successfully. - The response body shall contain in an array the representations of zero or - more PNF descriptors, as defined in clause 5.5.2.5. - If the NFVO supports alternative 2 (paging) according to clause 5.4.2.1 of - ETSI GS NFV-SOL 013 for this resource, inclusion of the Link HTTP header in - this response shall follow the provisions in clause 5.4.2.3 of ETSI GS NFV-SOL 013. + The NSD content successfully uploaded and + validated (synchronous mode). + The response body shall be empty. headers: - Content-Type: + WWW-Authenticate: description: | - The MIME type of the body of the request. Reference: IETF RFC 7231 + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: | + Version of the API used in the response. style: simple explode: false schema: type: string + + NsdArchiveContent.Put.409: + description: | + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to a conflict + with the state of the resource. + Typically, this is due to the fact that the "nsdOnboardingState" attribute has a value other than "CREATED" or "ERROR". + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall convey + more information about the error. + headers: WWW-Authenticate: description: | Challenge if the corresponding HTTP request has not provided authorization, or error details if the @@ -1934,9 +1585,9 @@ components: explode: false schema: type: string - Link: + Content-Type: description: | - Reference to other resources. Used for paging in the present document, see clause 4.7.2.1. + The MIME type of the body of the request. Reference: IETF RFC 7231 style: simple explode: false schema: @@ -1944,24 +1595,18 @@ components: content: application/json: schema: - description: | - Information about zero or more PNF descriptors. - The response body shall contain a representation in an array the representations - of zero or more PNF descriptors, as defined in clause 5.5.2.2. - If the NFVO supports alternative 2 (paging) according to clause 4.7.2.1 for this resource, - inclusion of the Link HTTP header in this response shall follow the provisions in clause 4.7.2.3. - type: array - items: - $ref: "definitions/SOL005NSDescriptorManagement_def.yaml#/definitions/PnfdInfo" + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" - IndividualPnfDescriptor.Get.200: + NSD.Get.200: description: | 200 OK - Shall be returned when information about the individual PNFD - descriptor has been read successfully. - The response body shall contain a representation of the - individual PNF descriptor, as defined in clause 5.5.2.5. + Shall be returned when the content of the NSD has been read successfully. + The payload body shall contain a copy of the file representing the NSD or + a ZIP file that contains the file or multiple files representing the NSD, + as specified above. + The "Content-Type" HTTP header shall be set according to the format of + the returned file. It shall be set to "text/plain" for a YAML file. headers: Content-Type: description: | @@ -1985,27 +1630,15 @@ components: explode: false schema: type: string - content: - application/json: - schema: - $ref: "definitions/SOL005NSDescriptorManagement_def.yaml#/definitions/PnfdInfo" - IndividualPnfDescriptor.Patch.200: + NSD.Get.406: description: | - 200 OK + 406 Not Acceptable - Shall be returned when the operation has been accepted - and completed successfully. - The response body shall contain attribute modifications - for an 'Individual PNF Descriptor' resource (see clause 5.5.2.4). + If the "Accept" header does not contain at least one name of a content type for which the NFVO can provide a + representation of the NSD, the NFVO shall respond with this response code. + The "ProblemDetails" structure may be included with the "detail" attribute providing more information about the error. headers: - Content-Type: - description: | - The MIME type of the body of the request. Reference: IETF RFC 7231 - style: simple - explode: false - schema: - type: string WWW-Authenticate: description: | Challenge if the corresponding HTTP request has not provided authorization, or error details if the @@ -2021,11 +1654,490 @@ components: explode: false schema: type: string - content: + + NSD.Get.409: + description: | + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to a + conflict with the state of the resource. + Typically, this is due to the fact that "nsdOnboardingState" has a value different from "ONBOARDED". + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall + convey more information about the error. + headers: + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the request. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + + NsdArchiveManifest.Get.200: + description: | + 200 OK + + Shall be returned when the content of the manifest file has been read successfully. + + If the "include_signatures" URI query parameter was absent in the request, or if the + manifest file has all security-related information embedded (i.e. there is no separate + certificate file), the payload body shall contain a copy of the manifest file of the + NSD archive, and the "Content-Type" HTTP header shall be set to "text/plain". + If the "include_signatures" URI query parameter was present in the related request and + the manifest file does not have all the security-related information embedded (i.e. there + is a separate certificate file), the "Content-Type" HTTP header shall be set to "application/zip" + and the payload body shall contain a ZIP archive which includes: + - a copy of the manifest file of the NSD archive; + - a copy of the related individual certificate file. + headers: + Content-Type: + description: | + The MIME type of the body of the request. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + + NsdArchiveManifest.Get.409: + description: | + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to a + conflict with the state of the resource. + Typically, this is due to the fact that "nsdOnboardingState " has a value different from "ONBOARDED". + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall convey + more information about the error. + headers: + Content-Type: + description: | + The MIME type of the body of the request. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + + IndividualNsdArchiveArtifact.Get.200: + description: | + 200 OK + + Shall be returned when the content of the artifact file has been read successfully. + + If the "include_signatures" request URI parameter was not provided in the related request, + the payload body shall contain a copy of the artifact file from the NSD archive, as defined + by ETSI GS NFV-SOL 007, and the "Content-Type" HTTP header shall be set according to the + content type of the artifact file. If the artifact is encrypted, the header shall be set to + the value "application/cms" (IETF RFC 7193). + + If the content type cannot be determined, the header shall be set to the value + "application/octet-stream". If the "include_signatures" request URI parameter was provided + in the related request, the "Content-Type" HTTP header shall be set to "application/zip" + and the payload body shall contain a ZIP archive which includes: + - a copy of the artifact file from the VNF package, as defined by ETSI GS NFVSOL 007 + - the related security information (individual signature file and optional related individual + certificate file). + headers: + Content-Type: + description: | + The MIME type of the body of the request. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + + IndividualNsdArchiveArtifact.Get.206: + description: | + 206 PARTIAL CONTENT + + If the NFVO supports range requests and the "include_signatures" request URI parameter was + not present in the related request, this response shall be returned when a single consecutive + byte range from the content of the artifact file has been read successfully according to the + request. + + The response body shall contain the requested part of the artifact file from the NSD archive, + as defined by ETSI GS NFV-SOL 007. + + The "Content-Type" HTTP header shall be set according to the content type of the artifact file. + If the content type cannot be determined, the header shall be set to the value + "application/octet-stream". + + The "Content-Range" HTTP header shall be provided according to IETF RFC 7233. + headers: + Content-Type: + description: | + The MIME type of the body of the request. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + + IndividualNsdArchiveArtifact.Get.409: + description: | + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to a conflict + with the state of the resource. + Typically, this is due to the fact that "nsdOnboardingState" has a value different from "ONBOARDED". + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall convey + more information about the error. + + headers: + Content-Type: + description: | + The MIME type of the body of the request. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + + IndividualNsdArchiveArtifact.Get.406: + description: | + 406 NOT ACCEPTABLE + + If the related request contained an "Accept" header not compatible with the Content type "application/zip" + but the "include_signatures" flag was provided, the NFVO shall respond with this response code. + The "ProblemDetails" structure may be included with the "detail" attribute providing more information about the error. + + headers: + Content-Type: + description: | + The MIME type of the body of the request. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + + IndividualNsdArchiveArtifact.Get.416: + description: | + 416 Range Not Satisfiable + + The byte range passed in the "Range" header did not match any available byte range in the artifact + file (e.g. "access after end of file"). + The response body may contain a ProblemDetails structure. + + headers: + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + + PNFDescriptors.Post.201: + description: | + 201 CREATED + + Shall be returned when a new "Individual PNF descriptor" + resource and the associated PNF descriptor identifier + has been created successfully. + The response body shall contain a representation of the + created PNF descriptor resource, as defined in clause 5.5.2.5. + The HTTP response shall include a "Location" HTTP header that + contains the resource URI of the created PNF descriptor resource. + headers: + Content-Type: + description: | + The MIME type of the body of the request. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "definitions/SOL005NSDescriptorManagement_def.yaml#/definitions/PnfdInfo" + + PNFDescriptors.Get.200: + description: | + 200 OK + + Shall be returned when information about zero or more PNF descriptors has + been queried successfully. + The response body shall contain in an array the representations of zero or + more PNF descriptors, as defined in clause 5.5.2.5. + If the NFVO supports alternative 2 (paging) according to clause 5.4.2.1 of + ETSI GS NFV-SOL 013 for this resource, inclusion of the Link HTTP header in + this response shall follow the provisions in clause 5.4.2.3 of ETSI GS NFV-SOL 013. + headers: + Content-Type: + description: | + The MIME type of the body of the request. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + Link: + description: | + Reference to other resources. Used for paging in the present document, see clause 4.7.2.1. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + description: | + Information about zero or more PNF descriptors. + The response body shall contain a representation in an array the representations + of zero or more PNF descriptors, as defined in clause 5.5.2.2. + If the NFVO supports alternative 2 (paging) according to clause 4.7.2.1 for this resource, + inclusion of the Link HTTP header in this response shall follow the provisions in clause 4.7.2.3. + type: array + items: + $ref: "definitions/SOL005NSDescriptorManagement_def.yaml#/definitions/PnfdInfo" + + IndividualPnfDescriptor.Get.200: + description: | + 200 OK + + Shall be returned when information about the individual PNFD + descriptor has been read successfully. + The response body shall contain a representation of the + individual PNF descriptor, as defined in clause 5.5.2.5. + headers: + Content-Type: + description: | + The MIME type of the body of the request. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "definitions/SOL005NSDescriptorManagement_def.yaml#/definitions/PnfdInfo" + + IndividualPnfDescriptor.Patch.200: + description: | + 200 OK + + Shall be returned when the operation has been accepted + and completed successfully. + The response body shall contain attribute modifications + for an 'Individual PNF Descriptor' resource (see clause 5.5.2.4). + headers: + Content-Type: + description: | + The MIME type of the body of the request. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + content: application/json: schema: $ref: "definitions/SOL005NSDescriptorManagement_def.yaml#/definitions/PnfdInfoModifications" + IndividualPnfDescriptor.Patch.412: + description: | + 412 Precondition failed + + Shall be returned upon the following error: A precondition given in an HTTP request header is not fulfilled. + Typically, this is due to an ETag mismatch, indicating that the resource was modified by another entity. + The response body should contain a ProblemDetails structure, in which the "detail" attribute should + convey more information about the error. + headers: + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + IndividualPnfDescriptor.Delete.200: description: | 204 NO CONTENT @@ -2122,6 +2234,68 @@ components: schema: type: string + PnfdArchiveContent.Get.409: + description: | + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due + to a conflict with the state of the resource. + Typically, this is due to the fact pnfdOnboardingState has a value different from ONBOARDED. + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall + convey more information about the error. + headers: + Content-Type: + description: | + The MIME type of the body of the request. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + + PnfdArchiveContent.Get.416: + description: | + 416 Range not Satisfiable + + Shall be returned upon the following error: The byte range passed in the "Range" header did not + match any available byte range in the PNFD archive (e.g. "access after end of file"). + The response body may contain a ProblemDetails structure. + headers: + + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + PnfdArchiveContent.Put.200: description: | 202 ACCEPTED @@ -2175,6 +2349,43 @@ components: schema: type: string + PnfdArchiveContent.Put.409: + description: | + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to a conflict + with the state of the resource. + Typically, this is due to the fact that the "pnfdOnboardingState" attribute has a value other than "CREATED" or "ERROR". + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall convey + more information about the error + headers: + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the request. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + PNFD.Get.200: description: | 200 OK @@ -2209,8 +2420,72 @@ components: schema: type: string + PNFD.Get.406: + description: | + 406 Not Acceptable + + If the "Accept" header does not contain at least one name of a content type for which the NFVO can + provide a representation of the PNFD, the NFVO shall respond with this response code. + The "ProblemDetails" structure may be included with the "detail" attribute providing more information + about the error. + headers: + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + + PNFD.Get.409: + description: | + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to + a conflict with the state of the resource. + Typically, this is due to the fact that "pnfdOnboardingState " has a value different from "ONBOARDED". + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall + convey more information about the error. + headers: + Content-Type: + description: | + The MIME type of the body of the request. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + PnfdArchiveManifest.Get.200: description: | + 200 OK + Shall be returned when the content of the manifest file has been read successfully. If the "include_signatures" URI query parameter was absent in the @@ -2252,6 +2527,46 @@ components: schema: type: string + PnfdArchiveManifest.Get.409: + description: | + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to a + conflict with the state of the resource. + Typically, this is due to the fact that "pnfdOnboardingState " has a value different from "ONBOARDED". + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall + convey more information about the error. + headers: + Content-Type: + description: | + The MIME type of the body of the request. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + enum: + - text/plain + - application/zip + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + IndividualPnfdArchiveArtifact.Get.200: description: | 200 OK @@ -2336,6 +2651,106 @@ components: schema: type: string + IndividualPnfdArchiveArtifact.Get.406: + description: | + 406 NOT ACCEPTABLE + + If the related request contained an "Accept" header not compatible with the Content type "application/zip" + but the "include_signatures" flag was provided, the NFVO shall respond with this response code. + The "ProblemDetails" structure may be included with the "detail" attribute providing more information + about the error. + headers: + Content-Type: + description: | + The MIME type of the body of the request. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + + IndividualPnfdArchiveArtifact.Get.409: + description: | + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to a + conflict with the state of the resource. + Typically, this is due to the fact that "pnfdOnboardingState" has a value different from "ONBOARDED". + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall + convey more information about the error. + headers: + Content-Type: + description: | + The MIME type of the body of the request. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + + IndividualPnfdArchiveArtifact.Get.416: + description: | + 416 Range Not Satisfiable + + The byte range passed in the "Range" header did not match any available byte range in the artifact + file (e.g. "access after end of file"). + The response body may contain a ProblemDetails structure. + headers: + Content-Type: + description: | + The MIME type of the body of the request. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + Subscriptions.Post.201: description: | 201 CREATED @@ -2368,11 +2783,96 @@ components: explode: false schema: type: string + Location: + description: | + The resource URI of the created NS instance + schema: + type: string + style: simple content: application/json: schema: $ref: "definitions/SOL005NSDescriptorManagement_def.yaml#/definitions/NsdmSubscription" + Subscriptions.Post.303: + description: | + 303 See Other + + Shall be returned when a subscription with the same callback URI and the same filter already exits and the + policy of the NFVO is to not create redundant subscriptions. + The HTTP response shall include a "Location" HTTP header that contains the resource URI of the existing + "Individual subscription" resource. + The response body shall be empty. + headers: + Content-Type: + description: | + The MIME type of the body of the request. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + Location: + description: | + The resource URI of the created NS instance + schema: + type: string + style: simple + + Subscriptions.Post.422: + description: | + 422 Unprocessable Entity + + Shall be returned upon the following error: The content type of the payload body is supported and the payload + body of a request contains syntactically correct data but the data cannot be processed. + The general cause for this error and its handling is specified in clause 6.4 of ETSI GS NFV-SOL 013 [16], + including rules for the presence of the response body. + Specifically in case of this resource, the response code 422 shall also be returned if the NFVO has tested + the Notification endpoint as described in clause 5.4.10.3.2 and the test has failed. + In this case, the "detail" attribute in the "ProblemDetails" structure shall convey more information about + the error. + headers: + Content-Type: + description: | + The MIME type of the body of the request. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + Subscriptions.Get.200: description: | 200 OK diff --git a/src/SOL005/NSDManagement/definitions/SOL005NSDescriptorManagement_def.yaml b/src/SOL005/NSDManagement/definitions/SOL005NSDescriptorManagement_def.yaml index c246405cf40033b2609021fbff5e2cf75452788f..2146d352c52fbdc60701a69883a810f4fa8089ab 100644 --- a/src/SOL005/NSDManagement/definitions/SOL005NSDescriptorManagement_def.yaml +++ b/src/SOL005/NSDManagement/definitions/SOL005NSDescriptorManagement_def.yaml @@ -8,7 +8,8 @@ definitions: This type represents attribute modifications for an individual NS descriptor resource based on the NsdInfo data type. The attributes of NsdInfo that can be modified are included in the NsdInfoModifications - data type.NOTE: At least one of the attributes - nsdOperationalState and + data type. + NOTE: At least one of the attributes - nsdOperationalState and userDefinedData - shall be present. oneOf: - required: @@ -23,7 +24,6 @@ definitions: Modifications of the userDefinedData attribute in NsdInfo data type. See note. If present, these modifications shall be applied according to the rules of JSON Merge Patch (see IETF RFC 7396). - NOTE- At least one of the attributes - nsdOperationalState and userDefinedData - shall be present. type: array items: $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs" @@ -46,6 +46,13 @@ definitions: description: > Identifier of the on boarded individual NS descriptor resource. This identifier is allocated by the NFVO. + NOTE 1: At least one of the attributes - vnfPkgId and nestedNsdInfoId shall be present, + after the NSD is on-boarded. + NOTE 2: If the value of the nsdOnboardingState attribute is not equal to "ONBOARDED", + the value of the nsdOperationalState attribute shall be equal to "DISABLED". + NOTE 3: If the value of the nsdOnboardingState attribute is not equal to "ONBOARDED", + the value of the nsdUsageState attribute shall be equal to "NOT_IN_USE". + NOTE 4: State changes of an NSD are illustrated in clause B.2. $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" nsdId: description: > @@ -82,6 +89,7 @@ definitions: description: > Identifies the VNF package for the VNFD referenced by the on-boarded NS descriptor resource. + See note 1. type: array items: $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" @@ -98,14 +106,18 @@ definitions: Identifies the NsdInfo element for the nested NSD referenced by the on-boarded NS descriptor resource. + See note 1. type: array items: $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" archiveSecurityOption: description: > Signals the security option used by the NSD archive as defined - in clause 5.1 of ETSI GS NFV SOL 007. - Valid values: OPTION_1, OPTION_2 + in clause 5.1 of ETSI GS NFV SOL 007. It shall be present after the + VNF package content has been on-boarded and absent otherwise. + Valid values: + - OPTION_1 + - OPTION_2 type: string enum: - OPTION_1 @@ -126,6 +138,7 @@ definitions: nsdOnboardingState: description: > On boarding state of the individual NS descriptor resource. + See note 4. $ref: "#/definitions/NsdOnboardingStateType" onboardingFailureDetails: description: > @@ -140,11 +153,12 @@ definitions: description: > Operational state of the individual NS descriptor resource. This attribute can be modified with the - PATCH method. + PATCH method. See note 2 and 4. $ref: "#/definitions/NsdOperationalStateType" nsdUsageState: description: > Usage state of the individual NS descriptor resource. + See note 3 and note 4. $ref: "#/definitions/NsdUsageStateType" userDefinedData: description: > @@ -364,11 +378,15 @@ definitions: 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). - NOTE 1: The attributes "nsdId" and "nsdInfoId" are alternatives to reference to a particular NSD in a filter. - They should not be used both in the same filter instance, but one alternative should be chosen. + NOTE 1: The permitted values of the "notificationTypes" attribute are spelled exactly + as the names of the notification types to facilitate automated code generation systems. - NOTE 2: The attributes "pnfdId" and "pnfdInfoId" are alternatives to reference to a particular PNFD in a filter. - They should not be used both in the same filter instance, but one alternative should be chosen. + NOTE 2: The attributes "nsdId" and "nsdInfoId" are alternatives to reference to a + particular NSD in a filter. They should not be used both in the same filter instance, + but one alternative should be chosen. + + NOTE 3: The attributes "pnfdId" and "pnfdInfoId" are alternatives to reference to a particular + PNFD in a filter. They should not be used both in the same filter instance, but one alternative should be chosen. anyOf: - oneOf: - required: @@ -383,12 +401,18 @@ definitions: properties: notificationTypes: description: > - Match particular notification types. Permitted values: NsdOnBoardingNotification, - NsdOnboardingFailureNotification, NsdChangeNotification, NsdDeletionNotification - PnfdOnBoardingNotification, PnfdOnBoardingFailureNotification, PnfdDeletionNotification. - The permitted values of the "notificationTypes" ] attribute are spelled - exactly as the names of the notification types to facilitate automated - code generation systems. + Match particular notification types. + + Permitted values: + - NsdOnBoardingNotification + - NsdOnboardingFailureNotification + - NsdChangeNotification + - NsdDeletionNotification + - PnfdOnBoardingNotification + - PnfdOnBoardingFailureNotification + - PnfdDeletionNotification + + See note 1. type: array items: type: string @@ -402,13 +426,13 @@ definitions: - PnfdDeletionNotification nsdInfoId: description: > - Match the NsdInfo identifier which is allocated by the NFVO. + Match the NsdInfo identifier which is allocated by the NFVO. See note 2. type: array items: $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" nsdId: description: > - Match the NSD identifier, which is allocated by the NSD designer. + Match the NSD identifier, which is allocated by the NSD designer. See note 2. type: array items: $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" @@ -448,7 +472,7 @@ definitions: pnfdInfoIds: description: > Match the PnfdInfo identifier for the PNFD - referenced by the on-boarded NSD. + referenced by the on-boarded NSD. See note 3. type: array items: $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" diff --git a/src/SOL005/NSDManagementNotification/NSDManagementNotification.yaml b/src/SOL005/NSDManagementNotification/NSDManagementNotification.yaml index 7de59c9a301af9b6351edd5a26456bd1981f8974..ed44239e6ca85849883cbf95eb77980dfef04119 100644 --- a/src/SOL005/NSDManagementNotification/NSDManagementNotification.yaml +++ b/src/SOL005/NSDManagementNotification/NSDManagementNotification.yaml @@ -1,24 +1,26 @@ openapi: 3.0.2 info: - title: SOL005 - NSD Management Notification interface + title: SOL005 - NSD Management Notification Interface description: | - SOL005 - NSD Management Notification interface + SOL005 - NSD Management Notification Interface IMPORTANT: Please note that this file might be not aligned to the current version of the ETSI Group Specification it refers to. In case of discrepancies the published ETSI Group Specification takes precedence. + Please report bugs to https://forge.etsi.org/rep/nfv/SOL005/issues + contact: name: NFV-SOL WG license: name: ETSI Forge copyright notice url: https://forge.etsi.org/etsi-forge-copyright-notice.txt - version: 2.0.0-impl:etsi.org:ETSI_NFV_OpenAPI:1 + version: 2.2.0-impl:etsi.org:ETSI_NFV_OpenAPI:1 externalDocs: - description: ETSI GS NFV-SOL 005 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.03.01_60/gs_nfv-sol005v030301p.pdf + description: ETSI GS NFV-SOL 005 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.05.01_60/gs_nfv-sol005v030501p.pdf servers: - url: http://127.0.0.1/callback/v2 @@ -28,19 +30,15 @@ paths: ############################################################################### # Notification endpoint NsdOnBoardingNotification # ############################################################################### - /URI_is_provided_by_the_client_when_creating_the_subscription_NsdOnBoardingNotification: + /URI_is_provided_by_the_client_when_creating_the_subscription-NsdOnBoardingNotification: parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept post: - summary: Notify about NSD and PNFD changes description: | - The POST method delivers a notification from the API producer to the API consumer. - This method shall support the URI query parameters, request and - response data structures, and response codes, as - specified in the Table 5.4.10.3.1-2. + The POST method delivers a notification from the API producer to the API consumer. See clause 5.4.10.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType requestBody: @@ -66,12 +64,9 @@ paths: $ref: "../responses/SOL005_resp.yaml#/components/responses/503" get: - summary: Test the notification endpoint description: | - The GET method allows the API producer to test the notification endpoint - that is provided by the API consumer, e.g. during subscription. - This method shall follow the provisions specified in the Table 5.4.10.3.2-2 for URI query parameters, - request and response data structures, and response codes. + The GET method allows the API producer to test the notification endpoint that is provided by the API + consumer, e.g. during subscription. See clause 5.4.10.3.2. responses: 204: $ref: '#/components/responses/NsdOnBoardingNotification.Get.204' @@ -95,19 +90,15 @@ paths: ############################################################################### # Notification endpoint NsdOnBoardingFailureNotification # ############################################################################### - /URI_is_provided_by_the_client_when_creating_the_subscription_NsdOnBoardingFailureNotification: + /URI_is_provided_by_the_client_when_creating_the_subscription-NsdOnBoardingFailureNotification: parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept post: - summary: Notify about NSD and PNFD changes description: | - The POST method delivers a notification from the API producer to the API consumer. - This method shall support the URI query parameters, request and - response data structures, and response codes, as - specified in the Table 5.4.10.3.1-2. + The POST method delivers a notification from the API producer to the API consumer. See clause 5.4.10.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType requestBody: @@ -133,12 +124,9 @@ paths: $ref: "../responses/SOL005_resp.yaml#/components/responses/503" get: - summary: Test the notification endpoint description: | - The GET method allows the API producer to test the notification endpoint - that is provided by the API consumer, e.g. during subscription. - This method shall follow the provisions specified in the Table 5.4.10.3.2-2 for URI query parameters, - request and response data structures, and response codes. + The GET method allows the API producer to test the notification endpoint that is provided by the API + consumer, e.g. during subscription. See clause 5.4.10.3.2. responses: 204: $ref: '#/components/responses/NsdOnBoardingFailureNotification.Get.204' @@ -162,19 +150,15 @@ paths: ############################################################################### # Notification endpoint NsdChangeNotification # ############################################################################### - /URI_is_provided_by_the_client_when_creating_the_subscription_NsdChangeNotification: + /URI_is_provided_by_the_client_when_creating_the_subscription-NsdChangeNotification: parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept post: - summary: Notify about NSD and PNFD changes description: | - The POST method delivers a notification from the API producer to the API consumer. - This method shall support the URI query parameters, request and - response data structures, and response codes, as - specified in the Table 5.4.10.3.1-2. + The POST method delivers a notification from the API producer to the API consumer. See clause 5.4.10.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType requestBody: @@ -200,12 +184,9 @@ paths: $ref: "../responses/SOL005_resp.yaml#/components/responses/503" get: - summary: Test the notification endpoint description: | - The GET method allows the API producer to test the notification endpoint - that is provided by the API consumer, e.g. during subscription. - This method shall follow the provisions specified in the Table 5.4.10.3.2-2 for URI query parameters, - request and response data structures, and response codes. + The GET method allows the API producer to test the notification endpoint that is provided by the API + consumer, e.g. during subscription. See clause 5.4.10.3.2. responses: 204: $ref: '#/components/responses/NsdChangeNotification.Get.204' @@ -229,19 +210,15 @@ paths: ############################################################################### # Notification endpoint NsdDeletionNotification # ############################################################################### - /URI_is_provided_by_the_client_when_creating_the_subscription_NsdDeletionNotification: + /URI_is_provided_by_the_client_when_creating_the_subscription-NsdDeletionNotification: parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept post: - summary: Notify about NSD and PNFD changes description: | - The POST method delivers a notification from the API producer to the API consumer. - This method shall support the URI query parameters, request and - response data structures, and response codes, as - specified in the Table 5.4.10.3.1-2. + The POST method delivers a notification from the API producer to the API consumer. See clause 5.4.10.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType requestBody: @@ -267,12 +244,9 @@ paths: $ref: "../responses/SOL005_resp.yaml#/components/responses/503" get: - summary: Test the notification endpoint description: | - The GET method allows the API producer to test the notification endpoint - that is provided by the API consumer, e.g. during subscription. - This method shall follow the provisions specified in the Table 5.4.10.3.2-2 for URI query parameters, - request and response data structures, and response codes. + The GET method allows the API producer to test the notification endpoint that is provided by the API + consumer, e.g. during subscription. See clause 5.4.10.3.2. responses: 204: $ref: '#/components/responses/NsdDeletionNotification.Get.204' @@ -296,19 +270,15 @@ paths: ############################################################################### # Notification endpoint PnfdOnBoardingNotification # ############################################################################### - /URI_is_provided_by_the_client_when_creating_the_subscription_PnfdOnBoardingNotification: + /URI_is_provided_by_the_client_when_creating_the_subscription-PnfdOnBoardingNotification: parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept post: - summary: Notify about NSD and PNFD changes description: | - The POST method delivers a notification from the API producer to the API consumer. - This method shall support the URI query parameters, request and - response data structures, and response codes, as - specified in the Table 5.4.10.3.1-2. + The POST method delivers a notification from the API producer to the API consumer. See clause 5.4.10.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType requestBody: @@ -334,12 +304,9 @@ paths: $ref: "../responses/SOL005_resp.yaml#/components/responses/503" get: - summary: Test the notification endpoint description: | - The GET method allows the API producer to test the notification endpoint - that is provided by the API consumer, e.g. during subscription. - This method shall follow the provisions specified in the Table 5.4.10.3.2-2 for URI query parameters, - request and response data structures, and response codes. + The GET method allows the API producer to test the notification endpoint that is provided by the API + consumer, e.g. during subscription. See clause 5.4.10.3.2. responses: 204: $ref: '#/components/responses/PnfdOnBoardingNotification.Get.204' @@ -363,19 +330,15 @@ paths: ############################################################################### # Notification endpoint PnfdOnBoardingFailureNotification # ############################################################################### - /URI_is_provided_by_the_client_when_creating_the_subscription_PnfdOnBoardingFailureNotification: + /URI_is_provided_by_the_client_when_creating_the_subscription-PnfdOnBoardingFailureNotification: parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept post: - summary: Notify about NSD and PNFD changes description: | - The POST method delivers a notification from the API producer to the API consumer. - This method shall support the URI query parameters, request and - response data structures, and response codes, as - specified in the Table 5.4.10.3.1-2. + The POST method delivers a notification from the API producer to the API consumer. See clause 5.4.10.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType requestBody: @@ -401,12 +364,9 @@ paths: $ref: "../responses/SOL005_resp.yaml#/components/responses/503" get: - summary: Test the notification endpoint description: | - The GET method allows the API producer to test the notification endpoint - that is provided by the API consumer, e.g. during subscription. - This method shall follow the provisions specified in the Table 5.4.10.3.2-2 for URI query parameters, - request and response data structures, and response codes. + The GET method allows the API producer to test the notification endpoint that is provided by the API + consumer, e.g. during subscription. See clause 5.4.10.3.2. responses: 204: $ref: '#/components/responses/PnfdOnBoardingFailureNotification.Get.204' @@ -430,19 +390,15 @@ paths: ############################################################################### # Notification endpoint PnfdDeletionNotification # ############################################################################### - /URI_is_provided_by_the_client_when_creating_the_subscription_PnfdDeletionNotification: + /URI_is_provided_by_the_client_when_creating_the_subscription-PnfdDeletionNotification: parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept post: - summary: Notify about NSD and PNFD changes description: | - The POST method delivers a notification from the API producer to the API consumer. - This method shall support the URI query parameters, request and - response data structures, and response codes, as - specified in the Table 5.4.10.3.1-2. + The POST method delivers a notification from the API producer to the API consumer. See clause 5.4.10.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType requestBody: @@ -468,12 +424,9 @@ paths: $ref: "../responses/SOL005_resp.yaml#/components/responses/503" get: - summary: Test the notification endpoint description: | - The GET method allows the API producer to test the notification endpoint - that is provided by the API consumer, e.g. during subscription. - This method shall follow the provisions specified in the Table 5.4.10.3.2-2 for URI query parameters, - request and response data structures, and response codes. + The GET method allows the API producer to test the notification endpoint that is provided by the API + consumer, e.g. during subscription. See clause 5.4.10.3.2. responses: 204: $ref: '#/components/responses/PnfdDeletionNotification.Get.204' diff --git a/src/SOL005/NSFaultManagement/NSFaultManagement.yaml b/src/SOL005/NSFaultManagement/NSFaultManagement.yaml index 29b31e42ecacf63c9e453ee55b37d9285659fce7..07708dd0c4d667d613dd7d63205c59c2ee305787 100644 --- a/src/SOL005/NSFaultManagement/NSFaultManagement.yaml +++ b/src/SOL005/NSFaultManagement/NSFaultManagement.yaml @@ -4,10 +4,13 @@ info: title: SOL005 - NS Fault Management Interface description: | SOL005 - NS Fault Management Interface - IMPORTANT: Please note that this file might be not aligned to the current version of the ETSI Group Specification - it refers to and has not been approved by the ETSI NFV ISG. In case of discrepancies the published ETSI Group - Specification takes precedence. + + IMPORTANT: Please note that this file might be not aligned to the current + version of the ETSI Group Specification it refers to. In case of + discrepancies the published ETSI Group Specification takes precedence. + Please report bugs to https://forge.etsi.org/rep/nfv/SOL005/issues + contact: name: NFV-SOL WG license: @@ -16,8 +19,8 @@ info: version: 1.2.0-impl:etsi.org:ETSI_NFV_OpenAPI:1 externalDocs: - description: ETSI GS NFV-SOL 005 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.03.01_60/gs_nfv-sol005v030301p.pdf + description: ETSI GS NFV-SOL 005 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.05.01_60/gs_nfv-sol005v030501p.pdf servers: - url: http://127.0.0.1/nsfm/v1 @@ -32,19 +35,15 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization get: - summary: Query alarms related to NS instances. description: | - Get Alarm List. - The API consumer can use this method to retrieve information about the alarm list. This method shall follow the - provisions specified in the Tables 8.4.2.3.2-1 and 8.4.2.3.2-2 for URI query parameters, request and response - data structures, and response codes. + The API consumer can use this method to retrieve information about the alarm list. See clause 8.4.2.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/filter - $ref: ../components/SOL005_params.yaml#/components/parameters/nextpage_opaque_marker - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept responses: "200": - $ref: '#/components/responses/Alarms.Get' + $ref: '#/components/responses/Alarms.Get.200' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -72,16 +71,13 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization get: - summary: Read individual alarm. description: | - The API consumer can use this method to read an individual alarm. This method shall follow the provisions - specified in the Tables 8.4.3.3.2-1 and 8.4.3.3.2-2 for URI query parameters, request and response data - structures, and response codes. + The API consumer can use this method to read an individual alarm. See clause 8.4.3.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept responses: "200": - $ref: '#/components/responses/IndividualAlarm.Get' + $ref: '#/components/responses/IndividualAlarm.Get.200' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -104,12 +100,8 @@ paths: $ref: ../responses/SOL005_resp.yaml#/components/responses/504 patch: - summary: Acknowledge individual alarm. description: | - Acknowledge Alarm - This method modifies an individual alarm resource. This method shall follow the provisions specified in the - Tables 8.4.3.3.2-1 and 8.4.3.3.2-2 for URI query parameters, request and response data structures, and response - codes. + This method modifies an individual alarm resource. See clause 8.4.3.3.4. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType @@ -117,7 +109,7 @@ paths: $ref: '#/components/requestBodies/AlarmModificationRequest' responses: "200": - $ref: '#/components/responses/IndividualAlarm.Patch' + $ref: '#/components/responses/IndividualAlarm.Patch.200' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -131,9 +123,9 @@ paths: "406": $ref: ../responses/SOL005_resp.yaml#/components/responses/406 "409": - $ref: ../responses/SOL005_resp.yaml#/components/responses/409 + $ref: '#/components/responses/IndividualAlarm.Patch.409' "412": - $ref: ../responses/SOL005_resp.yaml#/components/responses/412 + $ref: '#/components/responses/IndividualAlarm.Patch.412' "416": $ref: ../responses/SOL005_resp.yaml#/components/responses/416 "500": @@ -148,20 +140,17 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization get: - summary: Query multiple subscriptions. description: | - Query Subscription Information - The API consumer can use this method to retrieve the list of active subscriptions for alarms related to an NS - subscribed by the API consumer. It can be used e.g. for resynchronization after error situations. This method - shall follow the provisions specified in the Tables 8.4.4.3.2-1 and 8.4.4.3.2-2 for URI query parameters, - request and response data structures, and response codes. + The API consumer can use this method to retrieve the list of active subscriptions for alarms related to an + NS subscribed by the API consumer. It can be used e.g. for resynchronization after error situations. + See clause 8.4.4.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/filter - $ref: ../components/SOL005_params.yaml#/components/parameters/nextpage_opaque_marker - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept responses: "200": - $ref: '#/components/responses/FmSubscriptions.Get' + $ref: '#/components/responses/FmSubscriptions.Get.200' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -182,18 +171,8 @@ paths: $ref: ../responses/SOL005_resp.yaml#/components/responses/504 post: - summary: Subscribe to alarms related to NSs. description: | - The POST method creates a new subscription. This method shall follow the provisions specified in the Tables - 8.4.4.3.1-1 and 8.4.4.3.1-2 for URI query parameters, request and response data structures, and response codes. - As the result of successfully executing this method, a new "Individual subscription" resource shall exist as - defined in clause 8.4.5. This method shall not trigger any notification. Creation of two subscription resources - with the same callbackURI and the same filter can result in performance degradation and will provide duplicates - of notifications to the OSS, and might make sense only in very rare use cases. Consequently, the NFVO may either - allow creating a subscription resource if another subscription resource with the same filter and callbackUri - already exists (in which case it shall return the "201 Created" response code), or may decide to not create a - duplicate subscription resource (in which case it shall return a "303 See Other" response code referencing the - existing subscription resource with the same filter and callbackUri). + The POST method creates a new subscription. See clause 8.4.4.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType @@ -201,9 +180,9 @@ paths: $ref: '#/components/requestBodies/FmSubscriptionRequest' responses: "201": - $ref: '#/components/responses/FmSubscriptions.Post' + $ref: '#/components/responses/FmSubscriptions.Post.201' "303": - $ref: ../responses/SOL005_resp.yaml#/components/responses/303 + $ref: '#/components/responses/FmSubscriptions.Post.303' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -217,7 +196,7 @@ paths: "406": $ref: ../responses/SOL005_resp.yaml#/components/responses/406 "422": - $ref: ../responses/SOL005_resp.yaml#/components/responses/422 + $ref: '#/components/responses/FmSubscriptions.Post.422' "500": $ref: ../responses/SOL005_resp.yaml#/components/responses/500 "503": @@ -231,17 +210,14 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization get: - summary: Read an individual subscription. description: | - Query Subscription Information - The API consumer can use this method for reading an individual subscription for alarms related to NSs subscribed - by the API consumer. This method shall follow the provisions specified in the Tables 8.4.5.3.2-1 and 8.4.5.3.2-2 - for URI query parameters, request and response data structures, and response codes. + The API consumer can use this method for reading an individual subscription for alarms related to NSs + subscribed by the API consumer. See clause 8.4.5.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept responses: "200": - $ref: '#/components/responses/IndividualFmSubscription.Get' + $ref: '#/components/responses/IndividualFmSubscription.Get.200' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -262,17 +238,11 @@ paths: $ref: ../responses/SOL005_resp.yaml#/components/responses/504 delete: - summary: Terminate a subscription. description: | - Terminate Subscription - This method terminates an individual subscription. As the result of successfully executing this method, the - "Individual subscription" resource shall not exist any longer. This means that no notifications for that - subscription shall be sent to the formerly-subscribed API consumer. NOTE: Due to race conditions, some - notifications might still be received by the formerly-subscribed API consumer for a certain time period after - the deletion. + This method terminates an individual subscription. See clause 8.4.5.3.5. responses: "204": - $ref: '#/components/responses/IndividualFmSubscription.Delete' + $ref: '#/components/responses/IndividualFmSubscription.Delete.204' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -340,7 +310,7 @@ components: required: true responses: - Alarms.Get: + Alarms.Get.200: description: | 200 OK Shall be returned when information about zero or more alarms has been queried successfully. The response body @@ -385,7 +355,7 @@ components: items: $ref: ./definitions/SOL005NSFaultManagement_def.yaml#/definitions/Alarm - IndividualAlarm.Get: + IndividualAlarm.Get.200: description: | 200 OK Shall be returned when information about an individual alarm has been read successfully. The response body @@ -417,7 +387,7 @@ components: schema: $ref: ./definitions/SOL005NSFaultManagement_def.yaml#/definitions/Alarm - IndividualAlarm.Patch: + IndividualAlarm.Patch.200: description: | 200 OK Shall be returned when the request has been accepted and completed. The response body shall contain attribute @@ -449,7 +419,74 @@ components: schema: $ref: ./definitions/SOL005NSFaultManagement_def.yaml#/definitions/AlarmModifications - FmSubscriptions.Get: + IndividualAlarm.Patch.409: + description: | + 409 CONFLICT + Shall be returned upon the following error: The operation cannot be executed currently, due to a conflict + with the state of the "Individual alarm" resource. + Typically, this is due to the fact that the alarm is already in the state that is requested to be set + (such as trying to acknowledge an already-acknowledged alarm). + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall convey + more information about the error. + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + + IndividualAlarm.Patch.412: + description: | + 412 Precondition Failed + + Shall be returned upon the following error: A precondition given in an HTTP request header is not fulfilled. + Typically, this is due to an ETag mismatch, indicating that the resource was modified by another entity. + The response body should contain a ProblemDetails structure, in which the "detail" attribute should + convey more information about the error. + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + + FmSubscriptions.Get.200: description: | 200 OK Shall be returned when the list of subscriptions has been queried successfully. The response body shall @@ -495,7 +532,7 @@ components: items: $ref: ./definitions/SOL005NSFaultManagement_def.yaml#/definitions/FmSubscription - FmSubscriptions.Post: + FmSubscriptions.Post.201: description: | 201 Created Shall be returned when the subscription has been created successfully. The response body shall contain a @@ -530,7 +567,80 @@ components: schema: $ref: ./definitions/SOL005NSFaultManagement_def.yaml#/definitions/FmSubscription - IndividualFmSubscription.Get: + FmSubscriptions.Post.303: + description: | + 303 See Other + Shall be returned when a subscription with the same callback URI and the same filter already exists and the + policy of the NFVO is to not create redundant subscriptions. + The HTTP response shall include a "Location" HTTP header that contains the resource URI of the existing + "Individual subscription" resource. + The response body shall be empty. + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Location: + description: The resource URI of the created NS instance + style: simple + explode: false + schema: + type: string + format: url + + FmSubscriptions.Post.422: + description: | + 422 Unprocessable Entity + + Shall be returned upon the following error: The content type of the payload body is supported and the payload + body of a request contains syntactically correct data but the data cannot be processed. + The general cause for this error and its handling is specified in clause 6.4 of ETSI GS NFV-SOL 013 [16], + including rules for the presence of the response body. + Specifically in case of this resource, the response code 422 shall also be returned if the NFVO has tested + the Notification endpoint as described in clause 8.4.6.3.2 and the test has failed. + In this case, the "detail" attribute in the "ProblemDetails" structure shall convey more information about + the error. + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response.This header field shall be present if the response has a + non-empty message body. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + + IndividualFmSubscription.Get.200: description: | 200 OK Shall be returned when information about an individual subscription has been read successfully. The response @@ -563,7 +673,7 @@ components: schema: $ref: ./definitions/SOL005NSFaultManagement_def.yaml#/definitions/FmSubscription - IndividualFmSubscription.Delete: + IndividualFmSubscription.Delete.204: description: | 204 - No Content Shall be returned when the subscription resource has been deleted successfully. The response body shall be empty. diff --git a/src/SOL005/NSFaultManagement/definitions/SOL005NSFaultManagement_def.yaml b/src/SOL005/NSFaultManagement/definitions/SOL005NSFaultManagement_def.yaml index d1619f25072e0e6f5680e386116201c0b3a37ce0..3c3e86c0d9751534e273d219f4c5eb9783243162 100644 --- a/src/SOL005/NSFaultManagement/definitions/SOL005NSFaultManagement_def.yaml +++ b/src/SOL005/NSFaultManagement/definitions/SOL005NSFaultManagement_def.yaml @@ -101,7 +101,9 @@ definitions: faultDetails: description: > Provides additional information about the fault.. - type: string + type: array + items: + type: string _links: description: > Links for this resource. @@ -206,7 +208,9 @@ definitions: 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).. + one of the values in the array matches (logical "or" between the values of one filter attribute). + NOTE: The permitted values of the "notificationTypes" attribute are spelled exactly as the names + of the notification types to facilitate automated code generation systems. type: object properties: nsInstanceSubscriptionFilter: @@ -220,6 +224,7 @@ definitions: - AlarmNotification - AlarmClearedNotification - AlarmListRebuiltNotification. + See note. type: array items: type: string @@ -359,19 +364,19 @@ definitions: FaultyComponentInfo: description: > This type represents the faulty component that has a negative impact on an NS. - It shall comply with the provisions - defined in Table 8.5.3.4-1. + It shall comply with the provisions defined in Table 8.5.3.4-1. + NOTE: At least one of the attributes shall be present. type: object properties: faultyNestedNsInstanceId: description: > - Identifier of the faulty nested NS instance. + Identifier of the faulty nested NS instance. See note. $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" faultyResourceType: description: > - Identifier of the faulty NS virtual link instance. + Identifier of the faulty NS virtual link instance. See note. $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" faultyNsVirtualLinkInstanceId: description: > - Identifier of the faulty VNF instance. + Identifier of the faulty VNF instance. See note. $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" \ No newline at end of file diff --git a/src/SOL005/NSFaultManagementNotification/NSFaultManagementNotification.yaml b/src/SOL005/NSFaultManagementNotification/NSFaultManagementNotification.yaml index 1da3614c14c5e1675fff66b391cc4b558b66a85e..831bad5c1ca57d32e8794707935f3a96ec52dd35 100644 --- a/src/SOL005/NSFaultManagementNotification/NSFaultManagementNotification.yaml +++ b/src/SOL005/NSFaultManagementNotification/NSFaultManagementNotification.yaml @@ -1,19 +1,26 @@ openapi: 3.0.2 + info: - title: SOL005 - NS Fault Management Notification interface + title: SOL005 - NS Fault Management Notification Interface description: | - SOL005 - NS Fault Management Notification interface - IMPORTANT: Please note that this file might be not aligned to the current version of the ETSI Group Specification it - refers to. In case of discrepancies the published ETSI Group Specification takes precedence. + SOL005 - NS Fault Management Notification Interface + + IMPORTANT: Please note that this file might be not aligned to the current + version of the ETSI Group Specification it refers to. In case of + discrepancies the published ETSI Group Specification takes precedence. + Please report bugs to https://forge.etsi.org/rep/nfv/SOL005/issues + + contact: + name: NFV-SOL WG license: name: ETSI Forge copyright notice url: https://forge.etsi.org/etsi-forge-copyright-notice.txt version: 1.2.0-impl:etsi.org:ETSI_NFV_OpenAPI:1 externalDocs: - description: ETSI GS NFV-SOL 005 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.03.01_60/gs_nfv-sol005v030301p.pdf + description: ETSI GS NFV-SOL 005 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.05.01_60/gs_nfv-sol005v030501p.pdf servers: - url: http://127.0.0.1/callback/v1 @@ -24,15 +31,14 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization get: - summary: Test the notification endpoint. description: | - The GET method allows the server to test the notification endpoint that is provided by the API consumer, - e.g. during subscription. + The GET method allows the API producer to test the notification endpoint that is provided by the API consumer, + e.g. during subscription. See clause 8.4.6.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept responses: "204": - $ref: '#/components/responses/AlarmNotification.Get' + $ref: '#/components/responses/AlarmNotification.Get.204' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -49,10 +55,9 @@ paths: $ref: ../responses/SOL005_resp.yaml#/components/responses/503 post: - summary: Notify about NS alarms description: | - The POST method notifies an alarm related to a NS or that the alarm list has been rebuilt. The API consumer - shall have previously created an "individual subscription resource" with a matching filter. + The POST method notifies an alarm related to an NS or that the alarm list has been rebuilt. The API consumer + shall have previously created an "individual subscription resource" with a matching filter. See clause 8.4.6.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType @@ -60,7 +65,7 @@ paths: $ref: '#/components/requestBodies/AlarmNotificationRequest' responses: "204": - $ref: '#/components/responses/AlarmNotification.Post' + $ref: '#/components/responses/AlarmNotification.Post.204' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -81,15 +86,14 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization get: - summary: Test the notification endpoint. description: | - The GET method allows the server to test the notification endpoint that is provided by the client, - e.g. during subscription. + The GET method allows the API producer to test the notification endpoint that is provided by the API consumer, + e.g. during subscription. See clause 8.4.6.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept responses: "204": - $ref: '#/components/responses/AlarmClearedNotification.Get' + $ref: '#/components/responses/AlarmClearedNotification.Get.204' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -106,9 +110,9 @@ paths: $ref: ../responses/SOL005_resp.yaml#/components/responses/503 post: - summary: Notify about NS alarms description: | - The POST method notifies an alarm related to a NS or that the alarm list has been rebuilt. + The POST method notifies an alarm related to an NS or that the alarm list has been rebuilt. The API consumer + shall have previously created an "individual subscription resource" with a matching filter. See clause 8.4.6.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType @@ -116,7 +120,7 @@ paths: $ref: '#/components/requestBodies/AlarmClearedNotificationRequest' responses: "204": - $ref: '#/components/responses/AlarmClearedNotification.Post' + $ref: '#/components/responses/AlarmClearedNotification.Post.204' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -137,15 +141,14 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization get: - summary: Test the notification endpoint. description: | - The GET method allows the server to test the notification endpoint that is provided by the API consumer, - e.g. during subscription. + The GET method allows the API producer to test the notification endpoint that is provided by the API consumer, + e.g. during subscription. See clause 8.4.6.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept responses: "204": - $ref: '#/components/responses/AlarmListRebuiltNotification.Get' + $ref: '#/components/responses/AlarmListRebuiltNotification.Get.204' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -162,9 +165,9 @@ paths: $ref: ../responses/SOL005_resp.yaml#/components/responses/503 post: - summary: Notify about NS alarms description: | - The POST method notifies an alarm related to a NS or that the alarm list has been rebuilt. + The POST method notifies an alarm related to an NS or that the alarm list has been rebuilt. The API consumer + shall have previously created an "individual subscription resource" with a matching filter. See clause 8.4.6.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType @@ -172,7 +175,7 @@ paths: $ref: '#/components/requestBodies/AlarmListRebuiltNotificationRequest' responses: "204": - $ref: '#/components/responses/AlarmListRebuiltNotification.Post' + $ref: '#/components/responses/AlarmListRebuiltNotification.Post.204' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -218,7 +221,7 @@ components: required: true responses: - AlarmNotification.Get: + AlarmNotification.Get.204: description: | 204 No Content Shall be returned when the notification endpoint has been tested successfully. The response body shall be empty. @@ -240,7 +243,7 @@ components: type: string content: {} - AlarmNotification.Post: + AlarmNotification.Post.204: description: | 204 No Content Shall be returned when the notification has been delivered successfully. The response body shall be empty. @@ -262,7 +265,7 @@ components: type: string content: {} - AlarmClearedNotification.Get: + AlarmClearedNotification.Get.204: description: | 204 No Content Shall be returned when the notification endpoint has been tested successfully. The response body shall be empty. @@ -284,7 +287,7 @@ components: type: string content: {} - AlarmClearedNotification.Post: + AlarmClearedNotification.Post.204: description: | 204 No Content The notification was delivered successfully. The response body shall be empty. @@ -306,7 +309,7 @@ components: type: string content: {} - AlarmListRebuiltNotification.Get: + AlarmListRebuiltNotification.Get.204: description: | 204 No Content Shall be returned when the notification endpoint has been tested successfully. The response body shall be empty. @@ -328,7 +331,7 @@ components: type: string content: {} - AlarmListRebuiltNotification.Post: + AlarmListRebuiltNotification.Post.204: description: | 204 No Content The notification was delivered successfully. The response body shall be empty. diff --git a/src/SOL005/NSFaultManagementNotification/definitions/SOL005NSFaultManagementNotification_def.yaml b/src/SOL005/NSFaultManagementNotification/definitions/SOL005NSFaultManagementNotification_def.yaml index b01a5af110002a8c18acd799c0c62fdbbf180115..bd8abf867d0ca79319a5c73cfc3d1440253bf00e 100644 --- a/src/SOL005/NSFaultManagementNotification/definitions/SOL005NSFaultManagementNotification_def.yaml +++ b/src/SOL005/NSFaultManagementNotification/definitions/SOL005NSFaultManagementNotification_def.yaml @@ -119,7 +119,8 @@ definitions: description: > This type represents a notification that the alarm list has been rebuilt, e.g. if the NFVO detects its storage holding the alarm list is corrupted. It shall comply with the provisions defined in Table 8.5.2.7-1. - The notification shall be triggered by the NFVO when the alarm list has been rebuilt. + The notification shall be triggered by the NFVO when the alarm list has been rebuilt, e.g. because the NFVO has detected + that its storage holding the alarm list was corrupted. type: object required: - id diff --git a/src/SOL005/NSLCMCoordination/NSLCMCoordination.yaml b/src/SOL005/NSLCMCoordination/NSLCMCoordination.yaml new file mode 100644 index 0000000000000000000000000000000000000000..60583457ff4998775a7ff12cbc4ce33543505b58 --- /dev/null +++ b/src/SOL005/NSLCMCoordination/NSLCMCoordination.yaml @@ -0,0 +1,377 @@ +openapi: 3.0.2 + +info: + title: SOL005 - NS LCM Coordination interface + description: | + SOL005 - NS LCM Coordination interface + + IMPORTANT: Please note that this file might be not aligned to the current + version of the ETSI Group Specification it refers to. In case of + discrepancies the published ETSI Group Specification takes precedence. + + Please report bugs to https://forge.etsi.org/rep/nfv/SOL005/issues + + contact: + name: NFV-SOL WG + license: + name: ETSI Forge copyright notice + url: https://forge.etsi.org/etsi-forge-copyright-notice.txt + version: 1.0.0-impl:etsi.org:ETSI_NFV_OpenAPI:1 + +externalDocs: + description: ETSI GS NFV-SOL 005 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.05.01_60/gs_nfv-sol005v030501p.pdf + +servers: + - url: http://127.0.0.1/lcmcoord/v1 + - url: https://127.0.0.1/lcmcoord/v1 + +paths: + ############################################################################### + # API Versions # + ############################################################################### + /api_versions: + $ref: '../endpoints/SOL005_endpoints.yaml#/endpoints/api-versions' + + /coordinations: + parameters: + - $ref: ../components/SOL005_params.yaml#/components/parameters/Version + - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization + - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept + post: + description: | + The POST method requests the coordination of an LCM operation occurrence with a management operation executed + in the API producer. See clause 12.4.2.3.1. + requestBody: + $ref: '#/components/requestBodies/LcmCoordRequest' + responses: + 201: + $ref: '#/components/responses/CoordinationActions.Post.201' + 202: + $ref: '#/components/responses/CoordinationActions.Post.202' + 400: + $ref: ../responses/SOL005_resp.yaml#/components/responses/400 + 401: + $ref: ../responses/SOL005_resp.yaml#/components/responses/401 + 403: + $ref: ../responses/SOL005_resp.yaml#/components/responses/403 + 404: + $ref: ../responses/SOL005_resp.yaml#/components/responses/404 + 405: + $ref: ../responses/SOL005_resp.yaml#/components/responses/405 + 406: + $ref: ../responses/SOL005_resp.yaml#/components/responses/406 + 409: + $ref: ../responses/SOL005_resp.yaml#/components/responses/409 + 416: + $ref: ../responses/SOL005_resp.yaml#/components/responses/416 + 500: + $ref: ../responses/SOL005_resp.yaml#/components/responses/500 + 503: + $ref: '#/components/responses/CoordinationActions.Post.503' + 504: + $ref: ../responses/SOL005_resp.yaml#/components/responses/504 + + /coordinations/{coordinationId}: + parameters: + - $ref: ../components/SOL005_params.yaml#/components/parameters/Version + - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization + - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept + - $ref: '#/components/parameters/CoordinationId' + get: + description: | + The GET method reads a coordination result. See clause 12.4.3.3.2. + responses: + 200: + $ref: '#/components/responses/IndividualCoordinationAction.Get.200' + 400: + $ref: ../responses/SOL005_resp.yaml#/components/responses/400 + 401: + $ref: ../responses/SOL005_resp.yaml#/components/responses/401 + 403: + $ref: ../responses/SOL005_resp.yaml#/components/responses/403 + 404: + $ref: ../responses/SOL005_resp.yaml#/components/responses/404 + 405: + $ref: ../responses/SOL005_resp.yaml#/components/responses/405 + 406: + $ref: ../responses/SOL005_resp.yaml#/components/responses/406 + 416: + $ref: ../responses/SOL005_resp.yaml#/components/responses/416 + 500: + $ref: ../responses/SOL005_resp.yaml#/components/responses/500 + 503: + $ref: ../responses/SOL005_resp.yaml#/components/responses/503 + 504: + $ref: ../responses/SOL005_resp.yaml#/components/responses/504 + + /coordinations/cancel: + parameters: + - $ref: ../components/SOL005_params.yaml#/components/parameters/Version + - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization + - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept + post: + description: | + The POST method initiates the cancellation of an ongoing coordination action. + See clause 12.4.4.3.1. + responses: + 202: + $ref: '#/components/responses/CoordinationActionCancel.Post.202' + 400: + $ref: ../responses/SOL005_resp.yaml#/components/responses/400 + 401: + $ref: ../responses/SOL005_resp.yaml#/components/responses/401 + 403: + $ref: ../responses/SOL005_resp.yaml#/components/responses/403 + 404: + $ref: ../responses/SOL005_resp.yaml#/components/responses/404 + 405: + $ref: ../responses/SOL005_resp.yaml#/components/responses/405 + 406: + $ref: ../responses/SOL005_resp.yaml#/components/responses/406 + 409: + $ref: ../responses/SOL005_resp.yaml#/components/responses/409 + 416: + $ref: ../responses/SOL005_resp.yaml#/components/responses/416 + 500: + $ref: ../responses/SOL005_resp.yaml#/components/responses/500 + 503: + $ref: ../responses/SOL005_resp.yaml#/components/responses/503 + 504: + $ref: ../responses/SOL005_resp.yaml#/components/responses/504 + +components: + parameters: + CoordinationId: + name: coordinationId + in: path + description: | + Identifier of the LCM coordination. + + NOTE: This identifier can be retrieved from the resource referenced by the + "Location" HTTP header in the response to a POST request to the + "Coordinations" resource. + required: true + style: simple + explode: false + schema: + type: string + + requestBodies: + LcmCoordRequest: + description: | + Parameters for the coordination action as defined in clause 12.5.2.2. + content: + application/json: + schema: + $ref: ./definitions/SOL005NSLCMCoordination_def.yaml#/definitions/LcmCoordRequest + required: true + + responses: + CoordinationActions.Post.201: + description: | + 201 CREATED + + Shall be returned to indicate a finished coordination action when the API producer has chosen the synchronous + mode, which may be selected for coordination actions that finish within the time frame in which an HTTP + response is expected.. + + The response body shall contain an LcmCoord data structure that represents the result + of the coordination action. + The HTTP response shall include a "Location" HTTP header that indicates the URI of the + "Individual coordination action" resource that has been created as the result of the + finished coordination procedure. + headers: + Version: + description: The used API version. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Location: + description: The resource URI of the created VNF Snapshot Package. + style: simple + explode: false + schema: + type: string + format: url + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: definitions/SOL005NSLCMCoordination_def.yaml#/definitions/LcmCoord + + CoordinationActions.Post.202: + description: | + 202 ACCEPTED + + Shall be returned when the API producer has chosen the asynchronous mode and + the request has been accepted for processing. + + The response body shall be empty. + + The HTTP response shall include a "Location" HTTP header that indicates the + URI of the "Individual coordination action" resource that will be created + once the coordination operation has finished successfully. + + Further, the HTTP response may include a "Retry-After" HTTP header that indicates the time to wait before + sending the next GET request to the "individual coordination" resource indicated in the "Location" header. + If the header is provided, the NFVO shall record the signalled delay value in the "delay" attribute of the + applicable entry in the "lcmCoordinations" array in the "NsLcmOpOcc" structure. + headers: + Version: + description: The used API version. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Location: + description: The resource URI of the created VNF Snapshot Package. + style: simple + explode: false + schema: + type: string + format: url + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + + CoordinationActions.Post.503: + description: | + 503 Service Unavailable + + Shall be returned upon the following error: The API producer has chosen the synchronous mode and cannot perform + the requested coordination currently, but expects to be able to perform it sometime in the future. + + No "individual coordination action" resource shall be created. + + A ProblemDetails structure shall be included in the response to provide more details about the rejection + in the "details" attribute. + + The HTTP response shall include a "Retry-After" HTTP header that indicates the delay after which it is + suggested to repeat the coordination request with the same set of parameters. The NFVO shall record the + signalled delay value in the "delay" attribute of the applicable entry in the "rejectedLcmCoordinations" + array in the "NsLcmOpOcc" structure. + headers: + Version: + description: The used API version. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Retry-After: + description: | + It indicates the delay after which it is suggested to repeat the coordination request with the same + set of parameters. + style: simple + explode: false + schema: + type: string + format: url + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + + IndividualCoordinationAction.Get.200: + description: | + 200 OK + + Shall be returned when the coordination is finished and the coordination result + has been read successfully. + A representation of the "Individual coordination action" resource shall be returned + in the response body. + headers: + Version: + description: The used API version. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: definitions/SOL005NSLCMCoordination_def.yaml#/definitions/LcmCoord + + CoordinationActionCancel.Post.202: + description: | + 202 ACCEPTED + + Shall be returned when the cancellation request has been accepted for processing. + + The response shall have an empty payload body. + headers: + Version: + description: The used API version. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + + \ No newline at end of file diff --git a/src/SOL005/NSLCMCoordination/definitions/SOL005NSLCMCoordination_def.yaml b/src/SOL005/NSLCMCoordination/definitions/SOL005NSLCMCoordination_def.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b385c9cdd1731f3af5e7c9f6f1f144322fd83d5d --- /dev/null +++ b/src/SOL005/NSLCMCoordination/definitions/SOL005NSLCMCoordination_def.yaml @@ -0,0 +1,183 @@ +definitions: + LcmCoordRequest: + description: | + This type represents an LCM coordination request. + It shall comply with the provisions defined in table 12.5.2.2-1. + + NOTE: How to determine the supported coordination actions is outside + the scope of the present version of this document. + type: object + required: + - nsInstanceId + - nsLcmOpOccId + - lcmOperationType + - coordinationActionName + - _links + properties: + nsInstanceId: + description: | + Identifier of the NS instance which this coordination request is related to. + $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" + nsLcmOpOccId: + description: | + The identifier of the NS lifecycle management operation occurrence related + to the coordination. + $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" + lcmOperationType: + description: | + Indicates the type of the LCM operation with which coordination is requested. + Shall be the same as the value of the "lcmOperationType" attribute in the + NsLcmOpOcc structure that is referenced by the "nsLcmOpOccId". + $ref: "#/definitions/LcmOperationForCoordType" + coordinationActionName: + description: | + Indicates the LCM coordination action. + + See note. + $ref: "../../definitions/SOL005_def.yaml#/definitions/IdentifierInNsd" + inputParams: + description: | + Additional input parameters passed as input to the coordination action. + $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs" + _links: + description: | + Links to resources related to this request. + type: object + required: + - nsLcmOpOcc + - nsInstance + properties: + nsLcmOpOcc: + description: | + Related lifecycle management operation occurrence. + $ref: "../../definitions/SOL005_def.yaml#/definitions/Link" + nsInstance: + description: | + Related NS instance. + $ref: "../../definitions/SOL005_def.yaml#/definitions/Link" + + LcmCoord: + description: | + This type represents an LCM coordination result. It shall comply with the provisions + defined in table 12.5.2.3-1. + + NOTE: How to determine the supported coordination actions is outside the scope of the + present version of this document. + required: + - id + - coordinationResult + - nsInstanceId + - nsLcmOpOccId + - lcmOperationType + - coordinationActionName + - _links + properties: + id: + description: | + Identifier of this coordination result. + $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" + coordinationResult: + description: | + The result of executing the coordination action which also implies the action to + be performed by the NFVO as the result of this coordination. + $ref: "#/definitions/LcmCoordResultType" + nsInstanceId: + description: | + Identifier of the NS instance which this coordination request is related to. + $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" + nsLcmOpOccId: + description: | + The identifier of the NS lifecycle management operation occurrence related + to the coordination. + $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" + lcmOperationType: + description: | + Indicates the type of the LCM operation with which coordination is requested. + Shall be the same as the value of the "lcmOperationType" attribute in the + NsLcmOpOcc structure that is referenced by the "nsLcmOpOccId". + $ref: "#/definitions/LcmOperationForCoordType" + coordinationActionName: + description: | + Indicates the actual LCM coordination action. + + See note. + $ref: "../../definitions/SOL005_def.yaml#/definitions/String" + outputParams: + description: | + Additional parameters returned by the coordination action, e.g. on the reason + for the indicated coordinationResult. + $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs" + warnings: + description: | + Warning messages that were generated while the operation was executing. + $ref: "../../definitions/SOL005_def.yaml#/definitions/String" + error: + description: | + Error information related to the coordination. + + This attribute shall be present if "coordinationResult" is "ABORT" and may be + present if "coordinationResult" is "CANCELLED". + + If provided, the error information should be represented in the "error" attribute + of the related NsLcmOpOcc data structure. + $ref: "../../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + _links: + description: | + Links to resources related to this resource. + type: object + required: + - self + - nsLcmOpOcc + - nsInstance + properties: + self: + description: | + URI of this resource. + $ref: "../../definitions/SOL005_def.yaml#/definitions/Link" + nsLcmOpOcc: + description: | + Related lifecycle management operation occurrence. + $ref: "../../definitions/SOL005_def.yaml#/definitions/Link" + nsInstance: + description: | + Related NS instance. + $ref: "../../definitions/SOL005_def.yaml#/definitions/Link" + + LcmOperationForCoordType: + description: | + The enumeration LcmOperationForCoordType defines the permitted values to represent + NS lifecycle operation types in NS LCM operation coordination actions. + It shall comply with the provisions defined in table 12.5.4.3-1. + + - INSTANTIATE: Represents the "Instantiate NS" LCM operation. + - SCALE: Represents the "Scale NS" LCM operation. + - UPDATE: Represents the "Update NS" LCM operation. + - TERMINATE: Represents the "Terminate NS" LCM operation. + - HEAL: Represents the "Heal NS" LCM operation. + type: string + enum: + - INSTANTIATE + - SCALE + - UPDATE + - TERMINATE + - HEAL + + LcmCoordResultType: + description: | + The enumeration LcmCoordResultType defines the permitted values to represent the result + of executing an LCM coordination action. The coordination result also implies the action + to be performed by the NFVO as the follow-up to this coordination. The LcmCoordResultType + shall comply with the provisions defined in table 12.5.4.3.-1. + + - CONTINUE: The related LCM operation shall be continued, staying in the state "PROCESSING". + - ABORT: The related LCM operation shall be aborted by transitioning into the state "FAILED_TEMP". + - CANCELLED: The coordination action has been cancelled upon request of the API consumer, + i.e. the NFVO. The related LCM operation shall be aborted by transitioning into + the state "FAILED_TEMP". + type: string + enum: + - CONTINUE + - ABORT + - CACELLED + + diff --git a/src/SOL005/NSLifecycleManagement/NSLifecycleManagement.yaml b/src/SOL005/NSLifecycleManagement/NSLifecycleManagement.yaml index 16c73d238527797fc72ccfe598a1bc7e6927305d..1f4c873464a94dbd9d8cadc9c63c0d33856e9483 100644 --- a/src/SOL005/NSLifecycleManagement/NSLifecycleManagement.yaml +++ b/src/SOL005/NSLifecycleManagement/NSLifecycleManagement.yaml @@ -4,24 +4,27 @@ info: title: SOL005 - NS Lifecycle Management Interface description: | SOL005 - NS Lifecycle Management Interface - IMPORTANT: Please note that this file might be not aligned to the current version of the ETSI Group Specification it - refers to and has not been approved by the ETSI NFV ISG. In case of discrepancies the published ETSI Group Specification - takes precedence. + + IMPORTANT: Please note that this file might be not aligned to the current + version of the ETSI Group Specification it refers to. In case of + discrepancies the published ETSI Group Specification takes precedence. + Please report bugs to https://forge.etsi.org/rep/nfv/SOL005/issues + contact: name: NFV-SOL WG license: name: ETSI Forge copyright notice url: https://forge.etsi.org/etsi-forge-copyright-notice.txt - version: 2.0.0-impl:etsi.org:ETSI_NFV_OpenAPI:1 + version: 2.1.0-impl:etsi.org:ETSI_NFV_OpenAPI:1 externalDocs: - description: ETSI GS NFV-SOL 005 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.03.01_60/gs_nfv-sol005v030301p.pdf + description: ETSI GS NFV-SOL 005 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.05.01_60/gs_nfv-sol005v030501p.pdf servers: - - url: http://127.0.0.1/nslcm/v1 - - url: https://127.0.0.1/nslcm/v1 + - url: http://127.0.0.1/nslcm/v2 + - url: https://127.0.0.1/nslcm/v2 paths: /api_versions: @@ -32,11 +35,8 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization get: - summary: Query multiple NS instances. description: | - Query NS Instances. - The GET method queries information about multiple NS instances. This method shall support the URI query parameters, - request and response data structures, and response codes, as specified in the Tables 6.4.2.3.2-1 and 6.4.2.3.2-2. + The GET method queries information about multiple NS instances. See clause 6.4.2.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/filter - $ref: ../components/SOL005_params.yaml#/components/parameters/all_fields @@ -47,7 +47,7 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept responses: "200": - $ref: '#/components/responses/NsInstances.Get' + $ref: '#/components/responses/NsInstances.Get.200' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -72,13 +72,8 @@ paths: $ref: ../responses/SOL005_resp.yaml#/components/responses/504 post: - summary: Create a NS instance resource. description: | - The POST method creates a new NS instance resource. As the result of successfully executing this method, a new - "Individual NS instance" resource as defined in clause 6.4.3 shall have been created, and the value of the - "instantiationState" attribute in the representation of that resource shall be "NOT_INSTANTIATED". A notification - of type NsIdentifierCreationNotification shall be triggered as part of successfully executing this method as defined - in clause 6.5.2.6. + The POST method creates a new NS instance resource. See clause 6.4.2.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType @@ -86,7 +81,7 @@ paths: $ref: '#/components/requestBodies/NsInstanceCreateRequest' responses: "201": - $ref: '#/components/responses/NsInstances.Post' + $ref: '#/components/responses/NsInstances.Post.201' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -116,15 +111,15 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization get: - summary: Read an individual NS instance resource. description: | - The GET method retrieves information about a NS instance by reading an individual NS instance resource. + The GET method retrieves information about an NS instance by reading an "Individual NS instance" resource. + See clause 6.4.3.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType responses: "200": - $ref: '#/components/responses/IndividualNsInstance.Get' + $ref: '#/components/responses/IndividualNsInstance.Get.200' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -147,15 +142,11 @@ paths: $ref: ../responses/SOL005_resp.yaml#/components/responses/504 delete: - summary: Delete NS instance resource. description: | - Delete NS Identifier - This method deletes an individual NS instance resource. As the result of successfully executing this method, the - "Individual NS instance" resource shall not exist any longer. A notification of type "NsIdentifierDeletionNotification" - shall be triggered as part of successfully executing this method as defined in clause 6.5.2.7. + This method deletes an "Individual NS instance" resource. See clause 6.4.3.3.5. responses: "204": - $ref: '#/components/responses/IndividualNsInstance.Delete' + $ref: '#/components/responses/IndividualNsInstance.Delete.204' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -169,7 +160,7 @@ paths: "406": $ref: ../responses/SOL005_resp.yaml#/components/responses/406 "409": - $ref: ../responses/SOL005_resp.yaml#/components/responses/409 + $ref: '#/components/responses/IndividualNsInstance.Delete.409' "412": $ref: ../responses/SOL005_resp.yaml#/components/responses/412 "500": @@ -185,12 +176,8 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization post: - summary: Instantiate a NS. description: | - The POST method requests to instantiate a NS instance resource. The steps and conditions that apply as the result - of successfully executing this method are specified in clause 6.4.1.2. In addition, once the NFVO has successfully - completed the underlying NS LCM operation occurrence, it shall set the "nsState" attribute to the value "INSTANTIATED" - in the representation of the "Individual NS instance" resource. + The POST method instantiates an NS instance. See clause 6.4.4.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType @@ -198,7 +185,7 @@ paths: $ref: '#/components/requestBodies/NsInstanceInstantiateRequest' responses: "202": - $ref: '#/components/responses/InstantiateNsInstance.Post' + $ref: '#/components/responses/InstantiateNsInstance.Post.202' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -212,7 +199,7 @@ paths: "406": $ref: ../responses/SOL005_resp.yaml#/components/responses/406 "409": - $ref: ../responses/SOL005_resp.yaml#/components/responses/409 + $ref: '#/components/responses/InstantiateNsInstance.Post.409' "416": $ref: ../responses/SOL005_resp.yaml#/components/responses/416 "500": @@ -228,12 +215,8 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization post: - summary: Scale a NS instance. description: | - The POST method requests to scale a NS instance resource. The steps and conditions that apply as the result of - successfully executing this method are specified in clause 6.4.1.2. In addition, once the NFVO has successfully - completed the underlying NS LCM operation occurrence, it shall reflect the result of scaling the NS instance by - updating the "nsScaleStatus" attribute in the representation of the "Individual NS instance" resource. + The POST method requests to scale an NS instance resource. See clause 6.4.5.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType @@ -241,7 +224,7 @@ paths: $ref: '#/components/requestBodies/NsInstanceScaleRequest' responses: "202": - $ref: '#/components/responses/ScaleNsInstance.Post' + $ref: '#/components/responses/ScaleNsInstance.Post.202' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -255,7 +238,7 @@ paths: "406": $ref: ../responses/SOL005_resp.yaml#/components/responses/406 "409": - $ref: ../responses/SOL005_resp.yaml#/components/responses/409 + $ref: '#/components/responses/ScaleNsInstance.Post.409' "416": $ref: ../responses/SOL005_resp.yaml#/components/responses/416 "500": @@ -271,9 +254,8 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization post: - summary: Updates a NS instance. description: | - The POST method updates an NS instance. + The POST method updates an NS instance. See clause 6.4.6.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType @@ -281,7 +263,7 @@ paths: $ref: '#/components/requestBodies/NsInstanceUpdateRequest' responses: "202": - $ref: '#/components/responses/UpdateNsInstance.Post' + $ref: '#/components/responses/UpdateNsInstance.Post.202' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -295,7 +277,7 @@ paths: "406": $ref: ../responses/SOL005_resp.yaml#/components/responses/406 "409": - $ref: ../responses/SOL005_resp.yaml#/components/responses/409 + $ref: '#/components/responses/UpdateNsInstance.Post.409' "416": $ref: ../responses/SOL005_resp.yaml#/components/responses/416 "500": @@ -311,12 +293,8 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization post: - summary: Heal a NS instance. description: | - The POST method requests to heal an NS instance. This method shall follow the provisions specified in the Tables - 6.4.7.3.1-1 and 6.4.7.3.1-2 for URI query parameters, request and response data structures, and response codes. - The steps and conditions that apply as the result of successfully executing this method are specified in clause - 6.4.1.2. + The POST method requests to heal an NS instance. See clause 6.4.7.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType @@ -324,7 +302,7 @@ paths: $ref: '#/components/requestBodies/NsInstanceHealRequest' responses: "202": - $ref: '#/components/responses/HealNsInstance.Post' + $ref: '#/components/responses/HealNsInstance.Post.202' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -338,7 +316,7 @@ paths: "406": $ref: ../responses/SOL005_resp.yaml#/components/responses/406 "409": - $ref: ../responses/SOL005_resp.yaml#/components/responses/409 + $ref: '#/components/responses/HealNsInstance.Post.409' "416": $ref: ../responses/SOL005_resp.yaml#/components/responses/416 "500": @@ -354,16 +332,8 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization post: - summary: Terminate a NS instance. - description: | - Terminate NS task. The POST method terminates an NS instance. This method shall follow the provisions specified - in the Tables 6.4.8.3.1-1 and 6.4.8.3.1-2 for URI query parameters, request and response data structures, and - response codes. The steps and conditions that apply as the result of successfully executing this method are - specified in clause 6.4.1.2. In addition, once the NFVO has successfully completed the underlying NS LCM operation - occurrence, it shall set the "nsState" attribute in the representation of the "Individual NS instance" resource - to the value "NOT_INSTANTIATED". This method can only be used with an NS instance in the INSTANTIATED state. - Terminating an NS instance does not delete the NS instance identifier, but rather transitions the NS into the - NOT_INSTANTIATED state. + description: | + The POST method terminates an NS instance. See clause 6.4.8.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType @@ -371,7 +341,7 @@ paths: $ref: '#/components/requestBodies/NsInstanceTerminateRequest' responses: "202": - $ref: '#/components/responses/TerminateNsInstance.Post' + $ref: '#/components/responses/TerminateNsInstance.Post.202' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -385,7 +355,7 @@ paths: "406": $ref: ../responses/SOL005_resp.yaml#/components/responses/406 "409": - $ref: ../responses/SOL005_resp.yaml#/components/responses/409 + $ref: '#/components/responses/TerminateNsInstance.Post.409' "416": $ref: ../responses/SOL005_resp.yaml#/components/responses/416 "500": @@ -400,22 +370,32 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization get: - summary: Query multiple NS LCM operation occurrences. description: | - Get Operation Status. Shall be returned upon the following error: The operation cannot be executed currently, - due to a conflict with the state of the resource. Typically, this is due to the fact that the NS instance resource - is in NOT_INSTANTIATED state, or that another lifecycle management operation is ongoing. The response body shall - contain a ProblemDetails structure, in which the "detail" attribute shall convey more information about the error. + The API consumer can use this method to query status information about multiple NS lifecycle management + operation occurrences. See clause 6.4.9.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/filter - $ref: ../components/SOL005_params.yaml#/components/parameters/fields - $ref: ../components/SOL005_params.yaml#/components/parameters/exclude_fields - - $ref: ../components/SOL005_params.yaml#/components/parameters/exclude_default + - in: query + name: exclude_default + description: > + - Indicates to exclude the following complex attributes from the response. See clause 5.3 of ETSI GS NFV-SOL 013 [16] for details. The NFVO shall support this parameter. + + The following attributes shall be excluded from the NsLcmOpOcc structure in the response body if this parameter is provided: + - operationParams + - changedVnfInfo + - error + - resourceChanges + - lcmCoordinations + - warnings + schema: + type: string - $ref: ../components/SOL005_params.yaml#/components/parameters/nextpage_opaque_marker - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept responses: "200": - $ref: '#/components/responses/NsLcmOpOccs.Get' + $ref: '#/components/responses/NsLcmOpOccs.Get.200' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -441,18 +421,15 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization get: - summary: Read an individual NS LCM operation occurrence resource. description: | - The API consumer can use this method to read status information about a NS lifecycle management operation - occurrence by reading an individual "NS LCM operation occurrence" resource. This method shall follow the provisions - specified in the Tables 6.4.10.3.2-1 and 6.4.10.3.2-2 for URI query parameters, request and response data structures, - and response codes. + The API consumer can use this method to retrieve status information about an NS lifecycle management operation + occurrence by reading an individual "NS LCM operation occurrence" resource. See clause 6.4.10.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType responses: "200": - $ref: '#/components/responses/IndividualNsLcmOpOcc.Get' + $ref: '#/components/responses/IndividualNsLcmOpOcc.Get.200' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -480,15 +457,12 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization post: - summary: Retry a NS lifecycle management operation occurrence. description: | - The POST method initiates retrying a NS lifecycle management operation if that operation has experienced a - temporary failure, i.e. the related "NS LCM operation occurrence" is in "FAILED_TEMP" state. This method shall - follow the provisions specified in the Tables 6.4.11.3.1-1 and 6.4.11.3.1-2 for URI query parameters, request - and response data structures, and response codes. + The POST method initiates retrying an NS lifecycle management operation if that operation has experienced a + temporary failure, i.e. the related "NS LCM operation occurrence" is in "FAILED_TEMP" state. See clause 6.4.11.3.1. responses: "202": - $ref: '#/components/responses/NsLcmOpOccRetry.Post' + $ref: '#/components/responses/NsLcmOpOccRetry.Post.202' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -496,13 +470,13 @@ paths: "403": $ref: ../responses/SOL005_resp.yaml#/components/responses/403 "404": - $ref: ../responses/SOL005_resp.yaml#/components/responses/404 + $ref: '#/components/responses/NsLcmOpOccRetry.Post.404' "405": $ref: ../responses/SOL005_resp.yaml#/components/responses/405 "406": $ref: ../responses/SOL005_resp.yaml#/components/responses/406 "409": - $ref: ../responses/SOL005_resp.yaml#/components/responses/409 + $ref: '#/components/responses/NsLcmOpOccRetry.Post.409' "416": $ref: ../responses/SOL005_resp.yaml#/components/responses/416 "500": @@ -518,15 +492,12 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization post: - summary: Rollback a NS lifecycle management operation occurrence. description: | - The POST method initiates rolling back a NS lifecycle operation if that operation has experienced a temporary - failure, i.e. the related "NS LCM operation occurrence" is in "FAILED_TEMP" state. This method shall follow the - provisions specified in the Tables 6.4.12.3.1-1 and 6.4.12.3.1-2 for URI query parameters, request and response - data structures, and response codes. + The POST method initiates rolling back an NS lifecycle operation if that operation has experienced a + temporary failure, i.e. the related "NS LCM operation occurrence" is in "FAILED_TEMP" state. See clause 6.4.12.3.1. responses: "202": - $ref: '#/components/responses/NsLcmOpOccRollback.Post' + $ref: '#/components/responses/NsLcmOpOccRollback.Post.202' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -534,13 +505,13 @@ paths: "403": $ref: ../responses/SOL005_resp.yaml#/components/responses/403 "404": - $ref: ../responses/SOL005_resp.yaml#/components/responses/404 + $ref: '#/components/responses/NsLcmOpOccRollback.Post.404' "405": $ref: ../responses/SOL005_resp.yaml#/components/responses/405 "406": $ref: ../responses/SOL005_resp.yaml#/components/responses/406 "409": - $ref: ../responses/SOL005_resp.yaml#/components/responses/409 + $ref: '#/components/responses/NsLcmOpOccRollback.Post.409' "416": $ref: ../responses/SOL005_resp.yaml#/components/responses/416 "500": @@ -556,15 +527,12 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization post: - summary: Continue a NS lifecycle management operation occurrence. description: | - The POST method initiates continuing an NS lifecycle operation if that operation has experienced a temporary - failure, i.e. the related "NS LCM operation occurrence" is in "FAILED_TEMP" state. This method shall follow the - provisions specified in the Tables 6.4.13.3.1-1 and 6.4.13.3.1-2 for URI query parameters, request and response - data structures, and response codes. + The POST method initiates continuing an NS lifecycle operation if that operation has experienced a + temporary failure, i.e. the related "NS LCM operation occurrence" is in "FAILED_TEMP" state. See clause 6.4.13.3.1. responses: "202": - $ref: '#/components/responses/NsLcmOpOccContinue.Post' + $ref: '#/components/responses/NsLcmOpOccContinue.Post.202' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -572,13 +540,13 @@ paths: "403": $ref: ../responses/SOL005_resp.yaml#/components/responses/403 "404": - $ref: ../responses/SOL005_resp.yaml#/components/responses/404 + $ref: '#/components/responses/NsLcmOpOccContinue.Post.404' "405": $ref: ../responses/SOL005_resp.yaml#/components/responses/405 "406": $ref: ../responses/SOL005_resp.yaml#/components/responses/406 "409": - $ref: ../responses/SOL005_resp.yaml#/components/responses/409 + $ref: '#/components/responses/NsLcmOpOccContinue.Post.409' "416": $ref: ../responses/SOL005_resp.yaml#/components/responses/416 "500": @@ -594,15 +562,14 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization post: - summary: Mark a NS lifecycle management operation occurrence as failed. description: | - The POST method marks a NS lifecycle management operation occurrence as "finally failed" if that operation - occurrence is in "FAILED_TEMP" state. + The POST method marks an NS lifecycle management operation occurrence as "finally failed" if that + operation occurrence is in "FAILED_TEMP" state. See clause 6.4.14.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept responses: "200": - $ref: '#/components/responses/NsLcmOpOccFail.Post' + $ref: '#/components/responses/NsLcmOpOccFail.Post.200' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -610,13 +577,13 @@ paths: "403": $ref: ../responses/SOL005_resp.yaml#/components/responses/403 "404": - $ref: ../responses/SOL005_resp.yaml#/components/responses/404 + $ref: '#/components/responses/NsLcmOpOccFail.Post.404' "405": $ref: ../responses/SOL005_resp.yaml#/components/responses/405 "406": $ref: ../responses/SOL005_resp.yaml#/components/responses/406 "409": - $ref: ../responses/SOL005_resp.yaml#/components/responses/409 + $ref: '#/components/responses/NsLcmOpOccFail.Post.409' "416": $ref: ../responses/SOL005_resp.yaml#/components/responses/416 "500": @@ -632,22 +599,10 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization post: - summary: Cancel a NS lifecycle management operation occurrence. - description: | - The POST method initiates cancelling an ongoing NS lifecycle management operation while it is being executed or - rolled back, i.e. the related NS LCM operation occurrence\" is either in "PROCESSING" or "ROLLING_BACK" state. - This method shall follow the provisions specified in the Tables 6.4.15.3.1-1 and 6.4.15.3.1-2 for URI query - parameters, request and response data structures, and response codes. Before returning the "202 Accepted" response, - the NFVO shall update the "isCancelPending" and "cancelMode" attributes in the representation of the parent resource - according to the provisions in clause 6.5.2.3. In case of success of processing the asynchronous request: - 1) If the request has been processed in "PROCESSING" or "ROLLING_BACK" state, the "operationState" attribute in - the representation of the parent resource shall be changed to "FAILED_TEMP". In both cases, the NFVO shall update - the "isCancelPending" and "cancelMode" attributes in the representation of the parent resource according to the - provisions in clause 6.5.2.3 to reflect the new status, and the applicable "result" notification according to - clause 6.6.2.2 shall be emitted to indicate that the execution of the underlying NS LCM operation occurrence - has temporarily failed. Due to race conditions, the processing of the actual operation that is to be cancelled - may eventually still succeed, in which case the "operationState" attribute in the representation of the parent - resource shall represent the result of that operation, rather than the result of the cancellation. + description: | + The POST method initiates cancelling an ongoing NS lifecycle management operation while it is being executed + or rolled back, i.e. the related "NS LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. + See clause 6.4.15.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType @@ -655,7 +610,7 @@ paths: $ref: '#/components/requestBodies/NsLcmOpOccCancelRequest' responses: "202": - $ref: '#/components/responses/NsLcmOpOccCancel.Post' + $ref: '#/components/responses/NsLcmOpOccCancel.Post.202' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -663,13 +618,13 @@ paths: "403": $ref: ../responses/SOL005_resp.yaml#/components/responses/403 "404": - $ref: ../responses/SOL005_resp.yaml#/components/responses/404 + $ref: '#/components/responses/NsLcmOpOccCancel.Post.404' "405": $ref: ../responses/SOL005_resp.yaml#/components/responses/405 "406": $ref: ../responses/SOL005_resp.yaml#/components/responses/406 "409": - $ref: ../responses/SOL005_resp.yaml#/components/responses/409 + $ref: '#/components/responses/NsLcmOpOccCancel.Post.409' "416": $ref: ../responses/SOL005_resp.yaml#/components/responses/416 "500": @@ -684,18 +639,16 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization get: - summary: Query multiple subscriptions. description: | - Query Subscription Information. - The GET method queries the list of active subscriptions of the functional block that invokes the method. It can - be used e.g. for resynchronization after error situations. + The GET method queries the list of active subscriptions of the functional block that invokes the method. + It can be used e.g. for resynchronization after error situations. See clause 6.4.16.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/filter - $ref: ../components/SOL005_params.yaml#/components/parameters/nextpage_opaque_marker - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept responses: "200": - $ref: '#/components/responses/NsLcmSubscriptions.Get' + $ref: '#/components/responses/NsLcmSubscriptions.Get.200' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -716,16 +669,8 @@ paths: $ref: ../responses/SOL005_resp.yaml#/components/responses/504 post: - summary: Subscribe to NS lifecycle change notifications. - description: | - The POST method creates a new subscription. This method shall support the URI query parameters, request and - response data structures, and response codes, as specified in the Tables 6.4.16.3.1-1 and 6.4.16.3.1-2. Creation - of two subscription resources with the same callbackURI and the same filter can result in performance degradation - and will provide duplicates of notifications to the OSS, and might make sense only in very rare use cases. - Consequently, the NFVO may either allow creating a subscription resource if another subscription resource with - the same filter and callbackUri already exists (in which case it shall return the "201 Created" response code), - or may decide to not create a duplicate subscription resource (in which case it shall return a "303 See Other" - response code referencing the existing subscription resource with the same filter and callbackUri). + description: | + The POST method creates a new subscription. See clause 6.4.16.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType @@ -733,9 +678,9 @@ paths: $ref: '#/components/requestBodies/NsLcmSubscriptionRequest' responses: "201": - $ref: '#/components/responses/NsLcmSubscriptions.Post' + $ref: '#/components/responses/NsLcmSubscriptions.Post.201' "303": - $ref: ../responses/SOL005_resp.yaml#/components/responses/303 + $ref: '#/components/responses/NsLcmSubscriptions.Post.303' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -749,7 +694,7 @@ paths: "406": $ref: ../responses/SOL005_resp.yaml#/components/responses/406 "422": - $ref: ../responses/SOL005_resp.yaml#/components/responses/422 + $ref: '#/components/responses/NsLcmSubscriptions.Post.422' "500": $ref: ../responses/SOL005_resp.yaml#/components/responses/500 "503": @@ -763,16 +708,14 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization get: - summary: Read an individual subscription resource. description: | - The GET method retrieves information about a subscription by reading an individual subscription resource. This - method shall support the URI query parameters, request and response data structures, and response codes, as - specified in the Tables 6.4.17.3.2-1 and 6.4.17.3.2-2 + The GET method retrieves information about a subscription by reading an "Individual subscription" resource. + See clause 6.4.17.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept responses: "200": - $ref: '#/components/responses/IndividualNsLcmSubscription.Get' + $ref: '#/components/responses/IndividualNsLcmSubscription.Get.200' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -793,17 +736,11 @@ paths: $ref: ../responses/SOL005_resp.yaml#/components/responses/504 delete: - summary: Terminate a subscription. - description: | - The DELETE method terminates an individual subscription. This method shall support the URI query parameters, - request and response data structures, and response codes, as specified in the Tables 6.4.17.3.5-1 and 6.4.17.3.5-2. - As the result of successfully executing this method, the "Individual subscription" resource shall not exist any - longer. This means that no notifications for that subscription shall be sent to the formerly-subscribed API consumer. - NOTE: Due to race conditions, some notifications might still be received by the formerly-subscribed API consumer for - a certain time period after the deletion. + description: | + The DELETE method terminates an individual subscription. See clause 6.4.17.3.5. responses: "204": - $ref: '#/components/responses/IndividualNsLcmSubscription.Delete' + $ref: '#/components/responses/IndividualNsLcmSubscription.Delete.204' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -828,9 +765,8 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization get: - summary: Query VNF snapshots description: | - The GET method queries information about multiple VNF snapshots. + The GET method queries information about multiple VNF snapshots. See clause 6.4.19.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/filter - $ref: ../components/SOL005_params.yaml#/components/parameters/all_fields @@ -841,7 +777,7 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept responses: "200": - $ref: '#/components/responses/VnfSnapshots.Get' + $ref: '#/components/responses/VnfSnapshots.Get.200' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -867,14 +803,14 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization get: - summary: Query an Individual VNF snapshot description: | The GET method retrieves information about a VNF snapshot by reading an "Individual VNF snapshot" resource. + See clause 6.4.20.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept responses: "200": - $ref: '#/components/responses/IndividualVnfSnapshot.Get' + $ref: '#/components/responses/IndividualVnfSnapshot.Get.200' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -895,16 +831,13 @@ paths: $ref: ../responses/SOL005_resp.yaml#/components/responses/504 delete: - summary: Delete an Individual VNF snapshot description: | This method deletes an "Individual VNF snapshot" resource and the associated VNF snapshot information managed by the NFVO and corresponding VNFM, and any resource associated to the VNF snapshot managed by the VIM. - As the result of successfully executing this method, the "Individual VNF snapshot" resource shall not exist any - longer. In addition, the NFVO shall delete any references pointing to the "Individual VNF snapshot" resource from - the "NsInstance" data structures representing the "Individual NS instance" resources. + See clause 6.4.20.3.5. responses: "204": - $ref: '#/components/responses/IndividualVnfSnapshot.Delete' + $ref: '#/components/responses/IndividualVnfSnapshot.Delete.204' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -1049,7 +982,7 @@ components: required: true responses: - NsInstances.Get: + NsInstances.Get.200: description: | 200 OK Shall be returned when information about zero or more NS instances has been queried successfully. The response @@ -1095,7 +1028,7 @@ components: items: $ref: ./definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/NsInstance - NsInstances.Post: + NsInstances.Post.201: description: | 201 Created Shall be returned when a new "Individual NS instance" resource and the associated NS instance identifier has @@ -1131,7 +1064,7 @@ components: schema: $ref: ./definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/NsInstance - IndividualNsInstance.Get: + IndividualNsInstance.Get.200: description: | 200 OK Shall be returned when information about an individual NS instance has been read successfully. The response @@ -1165,7 +1098,7 @@ components: schema: $ref: ./definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/NsInstance - IndividualNsInstance.Delete: + IndividualNsInstance.Delete.204: description: | 204 No Content Shall be returned when the "Individual NS instance" resource and the associated NS identifier have been deleted @@ -1188,9 +1121,43 @@ components: type: string content: {} - InstantiateNsInstance.Post: + IndividualNsInstance.Delete.409: + description: | + 409 CONFLICT + Shall be returned upon the following error: The operation cannot be executed currently, due to a conflict + with the state of the resource. + Typically, this is due to the fact that the NS instance resource is in INSTANTIATED state. + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall convey + more information about the error. + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + + InstantiateNsInstance.Post.202: description: | 202 ACCEPTED + + accepted for processing, but the processing has not been completed. + The response body shall be empty. + The HTTP response shall include a "Location" HTTP header that contains the URI of the newly-created + "Individual NS LCM operation occurrence" resource corresponding to the operation. headers: Version: description: | @@ -1222,9 +1189,16 @@ components: format: url content: {} - ScaleNsInstance.Post: + InstantiateNsInstance.Post.409: description: | - 202 ACCEPTED + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to a conflict + with the state of the resource. + Typically, this is due to the fact that the NS instance resource is in the INSTANTIATED state, or that + another lifecycle management operation is ongoing. + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall convey + more information about the error. headers: Version: description: | @@ -1247,18 +1221,19 @@ components: explode: false schema: type: string - Location: - description: The resource URI of the created NS instance - style: simple - explode: false + content: + application/json: schema: - type: string - format: url - content: {} + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" - UpdateNsInstance.Post: + ScaleNsInstance.Post.202: description: | 202 ACCEPTED + + Shall be returned when the request has been accepted for processing, but the processing has not been completed. + The response body shall be empty. + The HTTP response shall include a "Location" HTTP header that contains the URI of the newly-created + "Individual NS lifecycle operation occurrence" resource corresponding to the operation. headers: Version: description: | @@ -1290,9 +1265,16 @@ components: format: url content: {} - HealNsInstance.Post: + ScaleNsInstance.Post.409: description: | - 202 ACCEPTED + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to a conflict with + the state of the resource. + Typically, this is due to the fact that the NS instance resource is in NOT_INSTANTIATED state, or that another + lifecycle management operation is ongoing. + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall convey more + information about the error. headers: Version: description: | @@ -1315,18 +1297,19 @@ components: explode: false schema: type: string - Location: - description: The resource URI of the created NS instance - style: simple - explode: false + content: + application/json: schema: - type: string - format: url - content: {} + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" - TerminateNsInstance.Post: + UpdateNsInstance.Post.202: description: | 202 ACCEPTED + + accepted for processing, but the processing has not been completed. + The response body shall be empty. + The HTTP response shall include a "Location" HTTP header that contains the URI of the newly-created + "Individual NS lifecycle operation occurrence" resource corresponding to the operation. headers: Version: description: | @@ -1358,17 +1341,16 @@ components: format: url content: {} - NsLcmOpOccs.Get: + UpdateNsInstance.Post.409: description: | - 200 OK - Shall be returned when status information for zero or more NS lifecycle management operation occurrences has - been queried successfully. The response body shall contain in an array the status information about zero or - more NS lifecycle operation occurrences, as defined in clause 6.5.2.3. If the "filter" URI parameter or one - of the "all_fields", "fields", "exclude_fields" or "exclude_default" URI parameters was supplied in the request - and is supported, the data in the response body shall have been transformed according to the rules specified - in clauses 5.2.2 and 5.3.2 of ETSI GS NFV-SOL 013 [16], respectively. If the NFVO supports alternative 2 - (paging) according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 [16] for this resource, inclusion of the Link HTTP - header in this response shall follow the provisions in clause 5.4.2.3 of ETSI GS NFV-SOL 013 [16]. + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to a conflict + with the state of the resource. + Typically, this is due to the fact that the NS instance resource is in NOT_INSTANTIATED state, or that + another lifecycle management operation is ongoing. + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall convey + more information about the error. headers: Version: description: | @@ -1385,9 +1367,37 @@ components: explode: false schema: type: string - Link: + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + + HealNsInstance.Post.202: + description: | + 202 ACCEPTED + + Shall be returned when the request has been accepted for processing, but the processing has not been completed. + The response body shall be empty. + The HTTP response shall include a "Location" HTTP header that contains the URI of the newly-created + "Individual NS lifecycle operation occurrence" resource corresponding to the operation. + headers: + Version: description: | - Reference to other resources. Used for paging in the present document, see clause 4.7.2.1. + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. style: simple explode: false schema: @@ -1398,18 +1408,25 @@ components: explode: false schema: type: string - content: - application/json: + Location: + description: The resource URI of the created NS instance + style: simple + explode: false schema: - type: array - items: - $ref: ./definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/NsLcmOpOcc + type: string + format: url + content: {} - IndividualNsLcmOpOcc.Get: + HealNsInstance.Post.409: description: | - 200 OK - Shall be returned when information about an NS LCM operation occurrence has been read successfully. The response - body shall contain status information about an NS lifecycle management operation occurrence (see clause 6.5.2.3). + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to a + conflict with the state of the resource. + Typically, this is due to the fact that the NS instance resource is in NOT_INSTANTIATED state, or that + another lifecycle management operation is ongoing. + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall convey more + information about the error headers: Version: description: | @@ -1427,9 +1444,7 @@ components: schema: type: string Content-Type: - description: | - The MIME type of the body of the response.This header field shall be present if the response has a - non-empty message body. + description: The MIME type of the body of the response. style: simple explode: false schema: @@ -1437,11 +1452,16 @@ components: content: application/json: schema: - $ref: ./definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/NsLcmOpOcc + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" - NsLcmOpOccRetry.Post: + TerminateNsInstance.Post.202: description: | 202 ACCEPTED + + Shall be returned when the request has been accepted for processing. + The response body shall be empty. + The HTTP response shall include a "Location" HTTP header that contains the URI of the newly-created + "Individual NS lifecycle operation occurrence" resource corresponding to the operation. headers: Version: description: | @@ -1473,9 +1493,16 @@ components: format: url content: {} - NsLcmOpOccRollback.Post: + TerminateNsInstance.Post.409: description: | - 202 ACCEPTED + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to a conflict + with the state of the resource. + Typically, this is due to the fact that the NS instance resource is in NOT_INSTANTIATED state, or that another + lifecycle management operation is ongoing. + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall convey more + information about the error. headers: Version: description: | @@ -1498,18 +1525,22 @@ components: explode: false schema: type: string - Location: - description: The resource URI of the created NS instance - style: simple - explode: false + content: + application/json: schema: - type: string - format: url - content: {} + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" - NsLcmOpOccContinue.Post: + NsLcmOpOccs.Get.200: description: | - 202 ACCEPTED + 200 OK + Shall be returned when status information for zero or more NS lifecycle management operation occurrences has + been queried successfully. The response body shall contain in an array the status information about zero or + more NS lifecycle operation occurrences, as defined in clause 6.5.2.3. If the "filter" URI parameter or one + of the "all_fields", "fields", "exclude_fields" or "exclude_default" URI parameters was supplied in the request + and is supported, the data in the response body shall have been transformed according to the rules specified + in clauses 5.2.2 and 5.3.2 of ETSI GS NFV-SOL 013 [16], respectively. If the NFVO supports alternative 2 + (paging) according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 [16] for this resource, inclusion of the Link HTTP + header in this response shall follow the provisions in clause 5.4.2.3 of ETSI GS NFV-SOL 013 [16]. headers: Version: description: | @@ -1526,27 +1557,31 @@ components: explode: false schema: type: string - Content-Type: - description: The MIME type of the body of the response. + Link: + description: | + Reference to other resources. Used for paging in the present document, see clause 4.7.2.1. style: simple explode: false schema: type: string - Location: - description: The resource URI of the created NS instance + Content-Type: + description: The MIME type of the body of the response. style: simple explode: false schema: type: string - format: url - content: {} + content: + application/json: + schema: + type: array + items: + $ref: ./definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/NsLcmOpOcc - NsLcmOpOccFail.Post: + IndividualNsLcmOpOcc.Get.200: description: | 200 OK - Shall be returned when the state of the NS lifecycle management operation occurrence has been changed - successfully. The response shall include a representation of the "Individual NS lifecycle management - operation occurrence" resource. + Shall be returned when information about an NS LCM operation occurrence has been read successfully. The response + body shall contain status information about an NS lifecycle management operation occurrence (see clause 6.5.2.3). headers: Version: description: | @@ -1576,9 +1611,12 @@ components: schema: $ref: ./definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/NsLcmOpOcc - NsLcmOpOccCancel.Post: + NsLcmOpOccRetry.Post.202: description: | 202 ACCEPTED + + Shall be returned when the request has been accepted for processing, but processing has not been completed. + The response shall have an empty payload body. headers: Version: description: | @@ -1610,17 +1648,18 @@ components: format: url content: {} - NsLcmSubscriptions.Get: + NsLcmOpOccRetry.Post.404: description: | - 200 OK - Shall be returned when the list of subscriptions has been queried successfully. The response body shall - contain in an array the representations of all active subscriptions of the functional block that invokes - the method, i.e. zero or more representations of lifecycle change notification subscriptions as defined in - clause 6.5.2.4. If the "filter" URI parameter was supplied in the request, the data in the response body - shall have been transformed according to the rules specified in clause 5.2.2 of ETSI GS NFV-SOL 013 [16]. - If the NFVO supports alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 [16] for this - resource, inclusion of the Link HTTP header in this response shall follow the provisions in clause 5.4.2.3 - of ETSI GS NFV-SOL 013 [16]. + 404 NOT FOUND + + Shall be returned upon the following error: The API producer did not find a current representation for the + target resource or is not willing to disclose that one exists. + The general cause for this error and its handling is specified in clause 6.4 of ETSI GS NFV-SOL 013 [16], + including rules for the presence of the response body. + Specifically in case of this task resource, the response code 404 shall also be returned if the task is not + supported for the NS LCM operation occurrence represented by the parent resource, which means that the task resource consequently does not exist. + In this case, the response body shall be present, and shall contain a ProblemDetails structure, in which the + "detail" attribute shall convey more information about the error. headers: Version: description: | @@ -1637,16 +1676,45 @@ components: explode: false schema: type: string - Link: + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + + NsLcmOpOccRetry.Post.409: + description: | + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to a conflict with + the state of the NS LCM operation occurrence resource. + Typically, this is due to the fact that the NS LCM operation occurrence is not in FAILED_TEMP state, or another + error handling action is starting, such as rollback or fail. + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall convey more + information about the error. + headers: + Version: description: | - Reference to other resources. Used for paging in the present document, see clause 4.7.2.1. + Version of the API used in the response. style: simple explode: false schema: type: string - Content-Type: + WWW-Authenticate: description: | - The MIME type of the body of the response.This header field shall be present if the response has a non-empty message body. + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. style: simple explode: false schema: @@ -1654,17 +1722,14 @@ components: content: application/json: schema: - type: array - items: - $ref: ./definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/LccnSubscription + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" - NsLcmSubscriptions.Post: + NsLcmOpOccRollback.Post.202: description: | - 201 Created\nShall be returned when the subscription has been - created successfully. The response body shall contain a representation - of the created "Individual subscription" resource. The HTTP response - shall include a "Location:" HTTP header that points to the created - "Individual subscription" resource. + 202 ACCEPTED + + Shall be returned when the request has been accepted for processing, but processing has not been completed. + The response shall have an empty payload body. headers: Version: description: | @@ -1682,19 +1747,582 @@ components: schema: type: string Content-Type: - description: | - The MIME type of the body of the response.This header field shall be present if the response has a - non-empty message body. + description: The MIME type of the body of the response. style: simple explode: false schema: type: string - content: - application/json: + Location: + description: The resource URI of the created NS instance + style: simple + explode: false schema: - $ref: ./definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/LccnSubscription + type: string + format: url + content: {} + + NsLcmOpOccRollback.Post.404: + description: | + 404 NOT FOUND + + Shall be returned upon the following error: The API producer did not find a current representation for the + target resource or is not willing to disclose that one exists. + The general cause for this error and its handling is specified in clause 6.4 of ETSI GS NFV-SOL 013 [16], + including rules for the presence of the response body. + Specifically, in case of this task resource, the response code 404 shall also be returned if the task is not + supported for the NS LCM operation occurrence represented by the parent resource, which means that the task resource consequently does not exist. + In this case, the response body shall be present, and shall contain a ProblemDetails structure, in which the + "detail" attribute shall convey more information about the error. + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + + NsLcmOpOccRollback.Post.409: + description: | + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to a conflict with + the state of the NS LCM operation occurrence resource. + Typically, this is due to the fact that the NS LCM operation occurrence is not in FAILED_TEMP state, or another + error handling action is starting, such as retry or fail. + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall convey more + information about the error. + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + + NsLcmOpOccContinue.Post.202: + description: | + 202 ACCEPTED + + Shall be returned when the request has been accepted for processing, but processing has not been completed. + The response shall have an empty payload body. + + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + Location: + description: The resource URI of the created NS instance + style: simple + explode: false + schema: + type: string + format: url + content: {} + + NsLcmOpOccContinue.Post.404: + description: | + 404 NOT FOUND + + Shall be returned upon the following error: The API producer did not find a current representation for the + target resource or is not willing to disclose that one exists. + The general cause for this error and its handling is specified in clause 6.4 of ETSI GS NFV-SOL 013 [16], + including rules for the presence of the response body. + Specifically, in case of this task resource, the response code 404 shall also be returned if the task is not + supported for the NS LCM operation occurrence represented by the parent resource, which means that the task resource consequently does not exist. + In this case, the response body shall be present, and shall contain a ProblemDetails structure, in which the + "detail" attribute shall convey more information about the error. + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + + NsLcmOpOccContinue.Post.409: + description: | + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to a conflict + with the state of the NS LCM operation occurrence resource. + Typically, this is due to the fact that the NS LCM operation occurrence is not in FAILED_TEMP state, or + another error handling action is starting, such as retry or fail. + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall convey + more information about the error. + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + + NsLcmOpOccFail.Post.200: + description: | + 200 OK + Shall be returned when the state of the NS lifecycle management operation occurrence has been changed + successfully. The response shall include a representation of the "Individual NS lifecycle management + operation occurrence" resource. + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response.This header field shall be present if the response has a + non-empty message body. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: ./definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/NsLcmOpOcc + + + NsLcmOpOccFail.Post.404: + description: | + 404 NOT FOUND + + Shall be returned upon the following error: The API producer did not find a current representation for the + target resource or is not willing to disclose that one exists. + The general cause for this error and its handling is specified in clause 6.4 of ETSI GS NFV-SOL 013 [16], + including rules for the presence of the response body. + Specifically in case of this task resource, the response code 404 shall also be returned if the task is not + supported for the NS LCM operation occurrence represented by the parent resource, which means that the task resource consequently does not exist. + In this case, the response body shall be present, and shall contain a ProblemDetails structure, in which the + "detail" attribute shall convey more information about the error. + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response.This header field shall be present if the response has a + non-empty message body. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + + NsLcmOpOccFail.Post.409: + description: | + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to a conflict with + the state of the NS LCM operation occurrence resource. + Typically, this is due to the fact that the NS LCM operation occurrence is not in FAILED_TEMP state, or another + error handling action is starting, such as retry or rollback. + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall convey more + information about the error. + + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response.This header field shall be present if the response has a + non-empty message body. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + + NsLcmOpOccCancel.Post.202: + description: | + 202 ACCEPTED + + Shall be returned when the request has been accepted for processing, but processing has not been completed. + The response shall have an empty entity body. + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + Location: + description: The resource URI of the created NS instance + style: simple + explode: false + schema: + type: string + format: url + content: {} + + NsLcmOpOccCancel.Post.404: + description: | + 404 NOT FOUND + + Shall be returned upon the following error: The API producer did not find a current representation for the + target resource or is not willing to disclose that one exists. + The general cause for this error and its handling is specified in clause 6.4 of ETSI GS NFV-SOL 013 [16], + including rules for the presence of the response body. + Specifically, in case of this task resource, the response code 404 shall also be returned if the task is not + supported for the NS LCM operation occurrence represented by the parent resource, which means that the task resource consequently does not exist. + In this case, the response body shall be present, and shall contain a ProblemDetails structure, in which the + "detail" attribute shall convey more information about the error. + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + + NsLcmOpOccCancel.Post.409: + description: | + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to a conflict + with the state of the NS LCM operation occurrence resource. + Typically, this is due to the fact that the operation occurrence is not in STARTING, PROCESSING or ROLLING_BACK state. + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall convey more + information about the error. + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + + NsLcmSubscriptions.Get.200: + description: | + 200 OK + Shall be returned when the list of subscriptions has been queried successfully. The response body shall + contain in an array the representations of all active subscriptions of the functional block that invokes + the method, i.e. zero or more representations of lifecycle change notification subscriptions as defined in + clause 6.5.2.4. If the "filter" URI parameter was supplied in the request, the data in the response body + shall have been transformed according to the rules specified in clause 5.2.2 of ETSI GS NFV-SOL 013 [16]. + If the NFVO supports alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 [16] for this + resource, inclusion of the Link HTTP header in this response shall follow the provisions in clause 5.4.2.3 + of ETSI GS NFV-SOL 013 [16]. + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Link: + description: | + Reference to other resources. Used for paging in the present document, see clause 4.7.2.1. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response.This header field shall be present if the response has a non-empty message body. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + type: array + items: + $ref: ./definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/LccnSubscription + + NsLcmSubscriptions.Post.201: + description: | + 201 Created\nShall be returned when the subscription has been + created successfully. The response body shall contain a representation + of the created "Individual subscription" resource. The HTTP response + shall include a "Location:" HTTP header that points to the created + "Individual subscription" resource. + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response.This header field shall be present if the response has a + non-empty message body. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: ./definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/LccnSubscription + + NsLcmSubscriptions.Post.303: + description: | + 303 See Other + + Shall be returned if a subscription with the same callback URI and the same filter already exits and the + policy of the NFVO is to not create redundant subscriptions. + The HTTP response shall include a "Location" HTTP header that contains the resource URI of the existing + "Individual subscription" resource. + The response body shall be empty. + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + + NsLcmSubscriptions.Post.422: + description: | + 422 Unprocessable Entity + + Shall be returned upon the following error: The content type of the payload body is supported and the + payload body of a request contains syntactically correct data but the data cannot be processed. + The general cause for this error and its handling is specified in clause 6.4 of ETSI GS NFV-SOL 013 [16], + including rules for the presence of the response body. + Specifically in case of this resource, the response code 422 shall also be returned if the NFVO has tested + the Notification endpoint as described in clause 6.4.18.3.2 and the test has failed. + In this case, the "detail" attribute in the "ProblemDetails" structure shall convey more information about the error. + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response.This header field shall be present if the response has a + non-empty message body. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" - IndividualNsLcmSubscription.Get: + IndividualNsLcmSubscription.Get.200: description: | 200 OK Shall be returned when information about an individual @@ -1729,7 +2357,7 @@ components: schema: $ref: ./definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/LccnSubscription - IndividualNsLcmSubscription.Delete: + IndividualNsLcmSubscription.Delete.204: description: | 204 NO CONTENT Shall be returned when the "Individual subscription" resource has been deleted successfully. The response @@ -1752,7 +2380,7 @@ components: type: string content: {} - VnfSnapshots.Get: + VnfSnapshots.Get.200: description: | 200 OK Shall be returned when information about zero or more VNF snapshots was queried successfully. @@ -1791,7 +2419,7 @@ components: items: $ref: ./definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/VnfSnapshotInfo - IndividualVnfSnapshot.Get: + IndividualVnfSnapshot.Get.200: description: | 200 OK Shall be returned when information about an individual VNF snapshot was read successfully. @@ -1826,7 +2454,7 @@ components: schema: $ref: ./definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/VnfSnapshotInfo - IndividualVnfSnapshot.Delete: + IndividualVnfSnapshot.Delete.204: description: | 204 NO CONTENT Shall be returned when the VNF snapshot resource and the associated VNF snapshot were deleted successfully. diff --git a/src/SOL005/NSLifecycleManagement/definitions/SOL005NSLifecycleManagement_def.yaml b/src/SOL005/NSLifecycleManagement/definitions/SOL005NSLifecycleManagement_def.yaml index 5b85bb1c730c2a58dc5d59cfeb6f83c2a9e81966..3e039c7226e259fdbd41c28cbbd34460b781b6bb 100644 --- a/src/SOL005/NSLifecycleManagement/definitions/SOL005NSLifecycleManagement_def.yaml +++ b/src/SOL005/NSLifecycleManagement/definitions/SOL005NSLifecycleManagement_def.yaml @@ -41,8 +41,10 @@ definitions: HealNsData: description: > - This type represents the information used to heal a NS. + This type represents the information used to heal a NS. It shall comply with the provisions defined in Table 6.5.3.43-1. + + NOTE: Either the actionsHealing or healScript attribute shall be present, not both attributes. type: object required: - degreeHealing @@ -76,7 +78,7 @@ definitions: particular order (e.g. as a script). The actionsHealing attribute can be used to provide a specific script whose content and actions might only be possible to be - derived during runtime. + derived during runtime. See note. type: array items: $ref: "../../definitions/SOL005_def.yaml#/definitions/String" @@ -86,7 +88,7 @@ definitions: to execute dedicated healing actions in a particular order. The healScript, since it refers to a script in the NSD, can be used to execute healing actions which - are defined during NS design time. + are defined during NS design time. See note. $ref: "#/definitions/IdentifierInNsd" additionalParamsforNs: description: > @@ -123,6 +125,12 @@ definitions: description: > This type represents a NS termination request. It shall comply with the provisions defined in Table 6.5.2.15-1. + + NOTE 1: Information needed for terminating specific VNF instances shall only be + specified in the "terminateVnfData" attribute, and not in the "terminateNsData" attribute. + NOTE 2: VNF instance(s) part of this NS instance is(are) terminated as part of Terminate + NS operation only if the instance(s) is(are) not used by any other NS instance. + type: object properties: terminationTime: @@ -131,6 +139,18 @@ definitions: will be terminated automatically at this timestamp. Cardinality "0" indicates the NS termination takes place immediately $ref: "../../definitions/SOL005_def.yaml#/definitions/DateTime" + terminateNsData: + description: > + Provides additional parameters to the termination process at the NS level. + See note 1. + $ref: "#/definitions/TerminateNsData" + terminateVnfData: + description: > + Provides the information to terminate VNF instance(s). + See note 1 and 2. + type: array + items: + $ref: "../../definitions/SOL005_def.yaml#/definitions/DateTime" CreateNsRequest: type: object @@ -177,6 +197,15 @@ definitions: description: > This type represents a response for Query NS operation. It shall comply with the provisions defined in Table 6.5.2.10-1. + + NOTE 1: If the "nsState" attribute is INSTANTIATED, at least either one + "vnfInstance" attribute or one "nestedNsInstanceId" attribute shall be present. + NOTE 2: The “priority” attribute of the NS instance is configured in the NSD in the NsDf structure. + The mapping from application-specific priority values to a value in the NsDf is under OSS/BSS responsibility. + The "zero" value expresses the highest priority and the fact that the NS instance based on this DF cannot be + pre-empted during resource allocation. + NOTE 3: Examples for the usage of priority include conflict resolution in case of resource shortage + type: object required: - id @@ -214,9 +243,15 @@ definitions: the NS instance. This attribute shall be present if the nsState attribute value is INSTANTIATED. $ref: "#/definitions/IdentifierInNsd" + priority: + description: > + Specifies the priority level of the NS instance. + See note 2 and note 3. + $ref: "../../definitions/SOL005_def.yaml#/definitions/Number" vnfInstance: description: > Information on constituent VNF(s) of the NS instance. + See note 1. type: array items: $ref: "#/definitions/VnfInstance" @@ -250,6 +285,7 @@ definitions: nestedNsInstanceId: description: > Identifier of the nested NS(s) of the NS instance. + See note. type: array items: $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" @@ -364,10 +400,30 @@ definitions: VnfInstance: description: > - This type represents a VNF instance. - Clause B.3.2 of ETSI GS NFV-SOL 003 [4] provides examples illustrating the relationship among the - different run-time information elements (CP, VL and link ports) used to represent the connectivity of a - VNF. + This type represents a VNF instance. It shall comply with the provisions defined in table 6.5.3.57-1. + + NOTE: Clause B.3.2 of ETSI GS NFV-SOL 003 provides examples illustrating the relationship among the + different run-time information elements (CP, VL and link ports) used to represent the connectivity + of a VNF. + + NOTE 1: Modifying the value of this attribute shall not be performed when conflicts exist between the + previous and the newly referred VNF package, i.e. when the new VNFD is changed with respect to + the previous VNFD in other aspects than merely referencing to other VNF software images. + In order to avoid misalignment of the VnfInstance with the current VNF's on-boarded VNF Package, + the values of attributes in the VnfInstance that have corresponding attributes in the VNFD shall + be kept in sync with the values in the VNFD. + NOTE 2: ETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. + NOTE 3: VNF configurable properties are sometimes also referred to as configuration parameters applicable + to a VNF. Some of these are set prior to instantiation and cannot be modified if the VNF is instantiated, + some are set prior to instantiation (are part of initial configuration) and can be modified later, + and others can be set only after instantiation. The applicability of certain configuration may depend + on the VNF and the required operation of the VNF at a certain point in time. + NOTE 4: It is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a + multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same + VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed + multi-site VL instance (refer to clause 6.5.3.59). + NOTE 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. type: object required: - id @@ -396,7 +452,8 @@ definitions: vnfdId: description: > Identifier of the VNFD on which the VNF instance is based. - Modifications to this attribute can be requested using the "ModifyVnfInfoData" structure. + Modifications to this attribute can be requested using the "ModifyVnfInfoData" structure. + See note 1. $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" vnfProvider: description: > @@ -422,41 +479,31 @@ definitions: $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" vnfConfigurableProperties: description: > - Additional VNF-specific attributes that provide the current values - of the configurable properties of the VNF instance. - - These attributes represent values that are stored persistently in the - VnfInstance structure and that correspond to configuration parameters - of the VNF instance. - Modifying these attributes affects the configuration of the VNF instance - either directly(if the VNF instance is in INSTANTIATED state at the time - of the modification) or as part of the subsequent VNF instantiation operation - (if the VNF instance is in NOT_INSTANTIATED state at the time of the modification). - - Configurable properties referred in these attributes are declared in - the VNFD. - - ETSI GS NFV-SOL 001 specifies the structure and format of the VNFD - based on TOSCA specifications. - VNF configurable properties are sometimes also referred to as - configuration parameters applicable to a VNF. Some of these are set - prior to instantiation and cannot be modified if the VNF is - instantiated, some are set prior to instantiation (are part of - initial configuration) and can be modified later, and others can be - set only after instantiation. The applicability of certain - configuration may depend on the VNF and the required operation of - the VNF at a certain point in time. - These configurable properties include the following standard - attributes, which are declared in the VNFD if auto-scaling and/or - auto-healing are supported by the VNF: - - isAutoscaleEnabled: If present, the VNF supports auto-scaling. If - set to true, auto-scaling is currently enabled. If set to false, - auto-scaling is currently disabled. - - isAutohealEnabled: If present, the VNF supports auto-healing. If - set to true, auto-healing is currently enabled. If set to false, - auto-healing is currently disabled. + Additional VNF-specific attributes that provide the current values of the + configurable properties of the VNF instance. + + These attributes represent values that are stored persistently in the VnfInstance + structure and that correspond to configuration parameters of the VNF instance. + + Modifying these attributes affects the configuration of the VNF instance either + directly (if the VNF instance is in INSTANTIATED state at the time of the modification) + or as part of the subsequent VNF instantiation operation (if the VNF instance is in + NOT_INSTANTIATED state at the time of the modification). + Configurable properties referred in these attributes are declared in the VNFD + (see note 2 and note 3). + + These configurable properties include the following standard attributes, which are + eclared in the VNFD if auto-scaling and/or auto-healing are supported by the VNF: + - isAutoscaleEnabled: If present, the VNF supports auto-scaling. If set to true, + auto-scaling is currently enabled. If set to false, auto-scaling is currently + disabled. + - isAutohealEnabled: If present, the VNF supports auto-healing. If set to true, + auto-healing is currently enabled. If set to false, auto-healing is currently + disabled. + + Modifications to these attributes can be requested using the "ModifyVnfInfoData" structure. - Modifications to this attribute can be requested using the "ModifyVnfInfoData" structure. + In addition, the provisions in clause 6.7 shall apply. $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs" vimId: description: > @@ -465,6 +512,10 @@ definitions: instantiationState: description: > The instantiation state of the VNF. + + Permitted values: + - NOT_INSTANTIATED: The VNF instance is terminated or not instantiated. + - INSTANTIATED: The VNF instance is instantiated. type: string enum: - NOT_INSTANTIATED @@ -485,7 +536,7 @@ definitions: $ref: "../../definitions/SOL005_def.yaml#/definitions/IdentifierInVnfd" vnfState: description: > - The state of the VNF instance. + State of the VNF instance. $ref: "#/definitions/VnfOperationalStateType" scaleStatus: description: > @@ -513,6 +564,16 @@ definitions: minItems: 1 items: $ref: "#/definitions/VnfExtCpInfo" + 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. + May be present otherwise. + type: array + items: + $ref: "#/definitions/VipCpInfo" extVirtualLinkInfo: description: > Information about the external VLs the VNF instance is connected to. @@ -521,11 +582,8 @@ definitions: $ref: "#/definitions/ExtVirtualLinkInfo" extManagedVirtualLinkInfo: description: > - External virtual links the VNF instance is connected to. - It is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a multi-site - VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same VNF internal VL - shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed multi-site VL instance - (refer to clause 6.5.3.59). + Information about the externally-managed internal VLs of the VNF instance. + See note 4 and note 5. type: array items: $ref: "#/definitions/ExtManagedVirtualLinkInfo" @@ -552,10 +610,11 @@ definitions: type: array items: $ref: "#/definitions/VnfcResourceInfo" - virtualLinkResourceInfo: + vnfVirtualLinkResourceInfo: description: > Information about the virtualised network resources used by the VLs of the VNF instance. + See note 5. type: array items: $ref: "#/definitions/VnfVirtualLinkResourceInfo" @@ -579,7 +638,7 @@ definitions: effect on the VNF instance, it only affects the information represented in the VnfInstance structure. - Metadata that the VNF provider foresees are expected to be declared in the VNFD. + Metadata that the VNF provider foresees are expected to be declared in the VNFD (see note 2). Modifications to these attributes can be requested using the "ModifyVnfInfoData" structure. $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs" extensions: @@ -593,6 +652,8 @@ definitions: operations, which means that the modified values can indirectly affect the configuration of the VNF instance. Extensions that are allowed for the VNF are declared in the VNFD. Modifications to these attributes can be requested using the "ModifyVnfInfoData" structure. + + In addition, the provisions in clause 6.7 shall apply. $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs" LccnLinks: @@ -712,8 +773,16 @@ definitions: NsVirtualLinkInfo: description: > This type specifies the information about an NS VL instance. - It shall comply with the provisions defined in - Table 6.5.3.53-1 + It shall comply with the provisions defined in Table 6.5.3.53-1. + + NOTE: As an NS can include NFs deployed in NFVI PoPs under the control + of several different VIMs, therefore deploying an NS VL can involve + several VIMs, each allocating different virtualised network resources, + as well as WIMs handling the connectivity in between the NFVI-PoPs in + the form of multi-site connectivity services. + When this NsVirtualLink is provided as an ExtVirtualLink as input + of a VNF LCM operation, the id of the ExtVirtualLink shall be the same + as the corresponding NsVirtualLink. type: object required: - id @@ -736,11 +805,7 @@ definitions: description: > Identifier(s) of the virtualised network resource(s) and/or multi-site connectivity service(s) realizing the VL instance. - As an NS can include NFs deployed in NFVI PoPs under the control of several different VIMs, therefore deploying - an NS VL can involve several VIMs, each allocating different virtualised network resources, as well as WIMs - handling the connectivity in between the NFVI-PoPs in the form of multi-site connectivity services. When this - NsVirtualLink is provided as an ExtVirtualLink as input of a VNF LCM operation, the id of the ExtVirtualLink - shall be the same as the corresponding NsVirtualLink. + See note. type: array items: $ref: "../../definitions/SOL005_def.yaml#/definitions/ResourceHandle" @@ -756,6 +821,8 @@ definitions: VnffgInfo: description: > Information on the VNFFG(s) of the NS instance. + NOTE: It indicates an exhaustive list of all the + CP instances and SAP instances of the VNFFG. type: object required: - id @@ -796,14 +863,15 @@ definitions: Identifiers of the CP instances attached to the constituent VNFs and PNFs or the SAP instances of the VNFFG. See note. - type: array - items: - $ref: "#/definitions/NsCpHandle" + $ref: "#/definitions/NsCpHandle" NfpInfo: description: > This type represents an NFP instance. It shall comply with the provisions defined in Table 6.5.3.66-1. + NOTE: When multiple identifiers are included, the position + of the identifier in the CpGroup data type specifies the + position of the group in the path. type: object required: - id @@ -831,13 +899,11 @@ definitions: cpGroup: description: > Group(s) of CPs and/or SAPs which the NFP passes through. - When multiple identifiers are included, the position of - the identifier in the CpGroup data type specifies the - position of the group in the path. + See note. type: array minItems: 1 items: - $ref: "#/definitions/NsCpHandle" + $ref: "#/definitions/CpGroupInfo" totalCp: description: > Total number of CP and SAP instances in this NFP instance. @@ -862,6 +928,10 @@ definitions: This type represents an identifier of the CP or SAP instance. It shall comply with the provisions defined in Table 6.5.3.56-1. + NOTE 1: For the VNF external CP instance, both vnfInstanceId and vnfExtCpInstanceId shall be present as a pair. + NOTE 2: For the PNF external CP instance, both pnfInfoId and PnfExtCpInstanceId shall be present as a pair. + NOTE 3: For the SAP instance, both nsInstanceId and nsSapInstanceId shall be present as a pair. + NOTE 4: One pair of identifiers (VNF external CP, PNF external CP or SAP) shall be present. type: object oneOf: - required: @@ -878,6 +948,7 @@ definitions: description: > Identifier of the VNF instance associated to the CP instance. This attribute shall be present if the CP instance is VNF external CP. + See note 1 and note 4. $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" vnfExtCpInstanceId: description: > @@ -999,6 +1070,11 @@ definitions: description: > This type represents information about an external CP of a VNF. It shall comply with the provisions defined in Table 6.5.3.70-1. + NOTE 1: The attributes "associatedVnfcCpId", "associatedVipCpId" and + "associatedVnfVirtualLinkId" are mutually exclusive. Exactly one shall be present. + NOTE 2: An external CP instance is not associated to a link + port in the cases indicated for the “extLinkPorts” attribute in clause 6.5.3.26. + type: object required: - id @@ -1040,6 +1116,7 @@ definitions: description: > Identifier of the "extLinkPortInfo" structure inside the "extVirtualLinkInfo" structure. Shall be present if the CP is associated to a link port. + See note 2. $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" metadata: description: > @@ -1047,26 +1124,34 @@ definitions: $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs" associatedVnfcCpId: description: > - Identifier of the "vnfcCpInfo" structure in "VnfcResourceInfo" structure - that represents the VNFC CP which is exposed by this external CP instance. - Shall be present in case this CP instance maps to a VNFC CP(s). - The attributes "associatedVnfcCpId" and "associatedVnfVirtualLinkId" are - mutually exclusive. One and only one shall be present. - $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" + Identifier of the "vnfcCpInfo" structure in "VnfcResourceInfo" structure that represents the VNFC CP which + is exposed by this external CP instance, either directly or via a floating IP address. Shall be present in + case this CP instance maps to a VNFC CP. See note 1. + $ref: "#/definitions/IdentifierInVnf" + associatedVipCpId: + description: > + Identifier of the VIP CP instance that is exposed as this VnfExtCp instance, either + directly or via a floating IP address, and the related "VipCpInfo" structure + in "VnfInstance". Shall be present if the cpdId of this VnfExtCp has a vipCpd + attribute. See note 1. + $ref: "#/definitions/IdentifierInVnf" associatedVnfVirtualLinkId: description: > Identifier of the "VnfVirtualLinkResourceInfo" structure that represents - the internal VL, which is exposed by this external CP instance. Shall be - present in case this CP instance maps to an internal VL. - The attributes "associatedVnfcCpId" and "associatedVnfVirtualLinkId" are - mutually exclusive. One and only one shall be present. - $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" + the internal VL or of the "ExtManagedVirtualLinkInfo" structure that represents + the externally-managed internal VL, which is exposed by this external CP instance. + Shall be present in case this CP instance maps to an internal VL (including + externally-managed internal VL). See note 1. + $ref: "#/definitions/IdentifierInVnf" CpGroupInfo: description: > This type represents describes a group of CPs and/or SAPs pairs associated to the same position in an NFP. It shall comply with the provisions defined in Table 6.5.3.71-1. + NOTE: All CP or SAP pairs in a group shall be instantiated from connection + point descriptors or service access point descriptors referenced in the corresponding + NfpPositionDesc. type: object properties: cpPairInfo: @@ -1075,6 +1160,8 @@ definitions: All CP or SAP pairs in a group shall be instantiated from connection point descriptors or service access point descriptors referenced in the corresponding NfpPositionDesc. + + See note. type: array minItems: 1 items: @@ -1102,14 +1189,16 @@ definitions: description: > This type represents describes a pair of ingress and egress CPs or SAPs which the NFP passes by. It shall comply with the provisions defined in Table 6.5.3.72-1. + + NOTE 1: The presence of a single vnfExpCpId, pnfExtCpId, or sapId occurrence indicates that the CP or SAP is used both as an ingress and egress port at a particular NFP position. + NOTE 2: Only one of these three attributes shall be present. type: object properties: vnfExtCpIds: description: > Identifier(s) of the VNF CP(s) which form the pair. - The presence of a single vnfExpCpId, pnfExtCpId, or sapId occurrence indicates - that the CP or SAP is used both as an ingress and egress port at a particular - NFP position. + + See note 1 and note 2. type: array maxItems: 2 items: @@ -1117,9 +1206,8 @@ definitions: pnfExtCpIds: description: > Identifier(s) of the PNF CP(s) which form the pair. - The presence of a single vnfExpCpId, pnfExtCpId, or sapId occurrence indicates - that the CP or SAP is used both as an ingress and egress port at a particular - NFP position. + + See note 1 and note 2. type: array maxItems: 2 items: @@ -1127,9 +1215,8 @@ definitions: sapIds: description: > Identifier(s) of the SAP(s) which form the pair. - The presence of a single vnfExpCpId, pnfExtCpId, or sapId occurrence indicates - that the CP or SAP is used both as an ingress and egress port at a particular - NFP position. + + See note 1 and note 2. type: array maxItems: 2 items: @@ -1139,6 +1226,8 @@ definitions: description: > This type represents provides input parameters to configure the forwarding behaviour. It shall comply with the provisions defined in Table 6.5.3.73-1. + NOTE 1: If applicable to the algorithm but not provided, default values determined by the VIM or NFVI are expected to be used. + NOTE 2: Weight applies to the CP instances in the order they have been created. type: object properties: algortihmName: @@ -1165,9 +1254,7 @@ definitions: description: > Percentage of messages sent to a CP instance. May be included if applicable to the algorithm. - If applicable to the algorithm but not provided, default values determined by - the VIM or NFVI are expected to be used. - Weight applies to the CP instances in the order they have been created. + See note 1 and note 2. type: array items: type: integer @@ -1176,6 +1263,9 @@ definitions: description: > This type describes the protocol layer(s) that a CP or SAP uses together with protocol-related information, like addresses. It shall comply with the provisions defined in Table 6.5.3.58-1. + NOTE: This attribute allows to signal the addition of further types of layer and + protocol in future versions of the present document in a backwards-compatible way. + In the current version of the present document, only IP over Ethernet is supported. type: object required: - layerProtocol @@ -1185,7 +1275,10 @@ definitions: description: > The identifier of layer(s) and protocol(s) associated to the network address information. - Permitted values: IP_OVER_ETHERNET See note. + Permitted values: + - IP_OVER_ETHERNET + + See note. type: string enum: - IP_OVER_ETHERNET @@ -1200,7 +1293,15 @@ definitions: IpOverEthernetAddressInfo: description: > This type represents information about a network address that has been assigned. - It shall comply with the provisions defined in Table 6.5.3.18-1. + + NOTE 1: At least one of "macAddress" or "ipAddresses" shall be present. + NOTE 2: Exactly one of "addresses" or "addressRange" shall be present. + NOTE 3: If the Cp instance represents a subport in a trunk, "segmentationId" shall be present. Otherwise it shall not be present. + NOTE 4: Depending on the NFVI networking infrastructure, the "segmentationId" may indicate the actual network segment value + (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an identifier + used between the application and the NFVI networking infrastructure to identify the network sub-interface + of the trunk port in question. In the latter case the NFVI infrastructure will map this local + "segmentationId" to whatever "segmentationId" is actually used by the NFVI's transport technology. type: object anyOf: - required: @@ -1211,23 +1312,20 @@ definitions: macAddress: description: > Assigned MAC address. + + See note 1. $ref: "#/definitions/MacAddress" segmentationId: description: > Identification of the network segment to which the Cp instance connects to. - If the Cp instance represents a subport in a trunk, "segmentationId" shall be present. - Otherwise it shall not be present. - Depending on the NFVI networking infrastructure, the "segmentationId" may indicate the actual network segment - value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an - identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface - of the trunk port in question. In the latter case the NFVI infrastructure will map this local "segmentationId" - to whatever "segmentationId" is actually used by the NFVI’s transport technology. + See note 3 and note 4. 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. type: array items: type: object @@ -1242,7 +1340,9 @@ definitions: type: description: > The type of the IP addresses. - Permitted values: IPV4, IPV6. + Permitted values: + - IPV4 + - IPV6 type: string enum: - IPV4 @@ -1251,6 +1351,7 @@ definitions: description: > Fixed addresses assigned (from the subnet defined by "subnetId" if provided). + See note 2. type: array items: $ref: "#/definitions/IpAddress" @@ -1265,6 +1366,7 @@ definitions: description: > An IP address range used, e.g., in case of egress connections. Exactly one of "addresses" or "addressRange" shall be present. + See note 2. type: object required: - minAddress @@ -1375,7 +1477,11 @@ definitions: ExtLinkPortInfo: 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. + i.e. a port providing connectivity for the VNF to an NS VL. + NOTE 1: The use cases UC#4 and UC#5 in Annex A.4 of ETSI GS NFV-IFA 007 + provide examples for such a configuration. + NOTE 2: The value of "trunkResourceId" is scoped by the value of + "vimConnectionId" in the "resourceHandle" attribute. type: object required: - id @@ -1397,6 +1503,23 @@ definitions: external connection point instance. The value refers to an "extCpInfo" item in the VnfInstance. $ref: "#/definitions/IdentifierInVnf" + secondaryCpInstanceId: + description: > + Additional external CP of the VNF connected to this link port. + If present, this attribute shall refer to a "secondary" ExtCpInfo item in the VNF instance that exposes + a virtual IP CP instance which shares this linkport with the external CP instance referenced by the + "cpInstanceId" attribute. + + See note 1. + $ref: "#/definitions/IdentifierInVnf" + trunkResourceId: + description: > + Identifier of the trunk resource in the VIM. + Shall be present if the present link port corresponds to the parent port that the trunk resource is associated + with. + + See note 2. + $ref: "#/definitions/IdentifierInVim" ExtManagedVirtualLinkInfo: type: object @@ -1442,6 +1565,14 @@ definitions: VnfLinkPortInfo: type: object + description: > + This type represents a link port of an internal VL of a VNF. + It shall comply with the provisions defined in table 6.5.3.64-1. + + NOTE 1: Either cpInstanceId with cpInstanceType set to "EXT_CP" or any combination of cpInstanceId with + cpInstanceType set to "VNFC_CP" and vipCpInstanceId (i.e. one or both of them) shall be present for a + VnfLinkPortInfo. In case both cpInstanceId with cpInstanceType set to "VNFC_CP" and vipCpInstanceId are present, + the two different CP instances share the linkport. required: - id - resourceHandle @@ -1470,6 +1601,7 @@ definitions: (i.e. VNFC CP) instance. The value refers to an "extCpInfo" item in the VnfInstance or a "vnfcCpInfo" item of a "vnfcResouceInfo" item in the VnfInstance. + See note 1. $ref: "#/definitions/IdentifierInVnf" cpInstanceType: description: > @@ -1479,10 +1611,23 @@ definitions: Permitted values: * VNFC_CP: The link port is connected to a VNFC CP * EXT_CP: The link port is associated to an external CP. + See note 1. type: string enum: - VNFC_CP - EXT_CP + vipCpInstanceId: + description: > + VIP CP instance of the VNF connected to this link port. May be present. + See notes 1 and 2. + $ref: "#/definitions/IdentifierInVnf" + trunkResourceId: + description: > + Identifier of the trunk resource in the VIM. + Shall be present if the present link port corresponds to the parent port that the trunk resource + is associated with. + See note 3. + $ref: "#/definitions/IdentifierInVim" MonitoringParameter: type: object @@ -1518,6 +1663,12 @@ definitions: description: > This type represents the information on virtualised compute and storage resources used by a VNFC in a VNF instance. + NOTE 1: ETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. + NOTE 2: A VNFC CP is "connected to" an external CP if the VNFC CP + is connected to an internal VL that exposes an external CP. A VNFC CP + is "exposed as" an external CP if it is connected directly to an external VL. + NOTE 3: The information can be omitted because it is already available + as part of the external CP information. type: object required: - id @@ -1536,7 +1687,7 @@ definitions: $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" vduId: description: > - Reference to the applicable VDU in the VNFD. + Reference to the applicable VDU in the VNFD. See note 1. $ref: "../../definitions/SOL005_def.yaml#/definitions/IdentifierInVnfd" computeResource: description: > @@ -1559,11 +1710,8 @@ definitions: CPs of the VNFC instance. Shall be present when that particular CP of the VNFC instance is exposed as an external CP of the VNF instance or is connected to - an external CP of the VNF instance. - A VNFC CP is "connected to" an external CP if the VNFC CP is - connected to an internal VL that exposes an external CP. A VNFC - CP is "exposed as" an external CP if it is connected directly to - an external VL. May be present otherwise. + an external CP of the VNF instance.See note 2. + May be present otherwise. type: array items: type: object @@ -1578,27 +1726,35 @@ definitions: $ref: "#/definitions/IdentifierInVnf" cpdId: description: > - Identifier of the VDU CPD, cpdId, in the VNFD. + Identifier of the VDU CPD, cpdId, in the VNFD. See note 1. $ref: "../../definitions/SOL005_def.yaml#/definitions/IdentifierInVnfd" vnfExtCpId: description: > - Identifier of the related external CP. Shall be present when the VNFC CP is exposed as an external CP - of the VNF instance or connected to an external CP of the VNF instance and shall be absent otherwise. - A VNFC CP is "connected to" an external CP if the VNFC CP is connected to an internal VL that exposes - an external CP. A VNFC CP is "exposed as" an external CP if it is connected directly to an external VL. + Identifier of the related external CP. Shall be present when + the VNFC CP is exposed as an external CP of the VNF instance + or connected to an external CP of the VNF instance (see note 2) + and shall be absent otherwise. $ref: "#/definitions/IdentifierInVnf" 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. type: array items: $ref: "#/definitions/CpProtocolInfo" + parentCpId: + description: > + Identifier of another VNFC CP instance that corresponds to the parent port of a trunk that the present VNFC + CP instance participates in. + Shall be provided if the present CP instance participates in a trunk as subport, and the referred VNFC + CP instances are also present in the vnfcCpInfo attribute. + $ref: "#/definitions/IdentifierInVnf" vnfLinkPortId: description: > - Identifier of the "vnfLinkPorts" structure in the "VnfVirtualLinkResourceInfo" structure. Shall be present if - the CP is associated to a link port on an internal VL of the VNF instance and shall be absent otherwise. + Identifier of the "vnfLinkPorts" structure in the "VnfVirtualLinkResourceInfo" or "ExtManagedVirtualLinkInfo" + structure. Shall be present if the CP is associated to a link port on an internal VL (including + externally-managed internal VL) of the VNF instance and shall be absent otherwise. $ref: "#/definitions/IdentifierInVnf" metadata: description: > @@ -1698,6 +1854,9 @@ definitions: description: > This type represents information about a link port of a VL instance. It shall comply with the provisions defined in Table 6.5.3.55-1. + NOTE: When the NsVirtualLink, from which the present NsLinkPort is part of, + is provided as an ExtVirtualLink as input of a VNF LCM operation, the id + of the ExtLinkPort shall be the same as the corresponding NsLinkPort. type: object required: - id @@ -1721,9 +1880,7 @@ definitions: sapInfo item in the NS instance. There shall be at most one link port associated with any connection point instance. - type: array - items: - $ref: "#/definitions/NsCpHandle" + $ref: "#/definitions/NsCpHandle" AffinityOrAntiAffinityRule: description: > @@ -1797,6 +1954,18 @@ definitions: InstantiateNsRequest: type: object + description: > + This type represents request parameters for the "Instantiate NS" operation. + + NOTE 1: The DF of the VNF instance shall match the VNF DF present in the associated VNF Profile. + NOTE 2: The NS DF of each nested NS shall be one of the allowed flavours in the associated + NSD (as referenced in the nestedNsd attribute of the NSD of the NS to be instantiated). + NOTE 3: The NSD of each referenced NSs (i.e. each nestedInstanceId) shall match the one of the + nested NSD in the composite NSD. + NOTE 4: When the NS is deployed over several sites, the VLs of this NS will include VNs + in each site connected over the WAN. In this case, the "wanConnectionData" provides the needed + information required to connect each VN to the WAN. Annex E provides additional information and + guidelines about the usage of the "wanConnectionData" attribute. required: - nsFlavourId properties: @@ -1821,8 +1990,7 @@ definitions: Specify an existing VNF instance to be used in the NS. If needed, the VNF Profile to be used for this VNF instance is also provided. - The DF of the VNF instance shall match the VNF DF - present in the associated VNF Profile. + See note 1. type: array items: $ref: "#/definitions/VnfInstanceData" @@ -1832,12 +2000,7 @@ definitions: NS within the NS. If needed, the NS Profile to be used for this nested NS instance is also provided. - NOTE 2: The NS DF of each nested NS shall be one of the - allowed flavours in the associated NSD (as referenced in the - nestedNsd attribute of the NSD of the NS to be instantiated). - NOTE 3: The NSD of each referenced NSs (i.e. each - nestedInstanceId) shall match the one of the nested NSD in - the composite NSD. + See note 2 and note 3. type: array items: $ref: "#/definitions/NestedNsInstanceData" @@ -1856,22 +2019,22 @@ definitions: An example can be a constraint for the nested NS to be in a specific geographic location. type: array items: - $ref: "#/definitions/NsLocationConstraint" + $ref: "#/definitions/NestedNsLocationConstraint" additionalParamsForNs: description: > Allows the OSS/BSS to provide additional parameter(s) at the composite NS level (as opposed to the VNF level, which is covered in additionalParamsForVnf), and as opposed to the nested NS level, which is covered in - additionalParamForNestedNs. + additionalParamsForNestedNs. $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs" - additionalParamForNestedNs: + additionalParamsForNestedNs: description: > Allows the OSS/BSS to provide additional parameter(s) per nested NS instance (as opposed to the composite NS - level, which is covered in additionalParamForNs, and as + level, which is covered in additionalParamsForNs, and as opposed to the VNF level, which is covered in - additionalParamForVnf). This is for nested NS instances + additionalParamsForVnf). This is for nested NS instances that are to be created by the NFVO as part of the NS instantiation and not for existing nested NS instances that are referenced for reuse. @@ -1884,7 +2047,7 @@ definitions: per VNF instance (as opposed to the composite NS level, which is covered in additionalParamsForNs and as opposed to the nested NS level, which is covered in - additionalParamForNestedNs). This is for VNFs that are + additionalParamsForNestedNs). This is for VNFs that are to be created by the NFVO as part of the NS instantiation and not for existing VNF that are referenced for reuse. type: array @@ -1905,10 +2068,7 @@ definitions: wanConnectionData: description: > Information for connecting VNs to the WAN when VLs are deployed across a WAN. - When the NS is deployed over several sites, the VLs of this NS will include VNs in each site connected over - the WAN. In this case, the "wanConnectionData" provides the needed information required to connect each VN - to the WAN. Annex E provides additional information and guidelines about the usage of the "wanConnectionData" - attribute. + See note 4. type: array items: $ref: "#/definitions/WanConnectionData" @@ -1965,19 +2125,31 @@ definitions: type: string vnfConfigurableProperties: description: > - Values for the "vnfConfigurableProperties" input + If present, this attribute provides values for the configurable properties declared in the VNFD. + These values will override the default values if default values are also declared in the VNFD. + + It provides values for the "vnfConfigurableProperties" input parameter of the Instantiate VNF operation defined in ETSI GS NFV-SOL 003 [4]. $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs" metadata: description: > - Values for the "metadata" input parameter of the Create + If present, this attribute provides values for metadata. + Metadata can but need not be declared in the VNFD. + These values will override the default values if default + values are also declared in the VNFD. + + It provides the values for the "metadata" input parameter of the Create VNF Identifier operation defined in ETSI GS NFV-SOL 003 [4]. $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs" extensions: description: > - Values for the "extensions" attribute of the Instantiate + If present, this attribute provides values for the extensions + declared in the VNFD. These values will override the default + values if default values are also declared in the VNFD. + + It provides the values for the "extensions" input parameter of the Instantiate VNF operation defined in ETSI GS NFV-SOL 003 [4]. $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs" additionalParams: @@ -1994,17 +2166,20 @@ definitions: • as a country code • as a civic address combined with a country code • as an area, conditionally combined with a country code - The LocationConstraints data type shall comply with the provisions defined in Table 6.5.3.21-1. + + NOTE: If both "countryCode" and "area" are present, no conflicts should + exist between the values of these two attributes. In case of conflicts, + the API producer (i.e. the NFVO) shall disregard parts of the geographic + area signalled by "area" that are outside the boundaries of the country + signalled by "countryCode". If "countryCode" is absent, it is solely the "area" + attribute that defines the location constraint. type: object properties: countryCode: description: > - The two-letter ISO 3166 [29] country code in capital letters. - Shall be present in case the "area" attribute is absent. May be absent if the "area" attribute is present. - If both "countryCode" and "area" are present, no conflicts should exist between the values of these two attributes. - In case of conflicts, the API producer (i.e. the NFVO) shall disregard parts of the geographic area signalled - by "area" that are outside the boundaries of the country signalled by "countryCode". If "countryCode" is absent, - it is solely the "area" attribute that defines the location constraint. + The two-letter ISO 3166 country code in capital letters. Shall be present + in case the "area" attribute is absent. May be absent if the "area" + attribute is present (see note). type: string civicAddressElement: description: > @@ -2034,10 +2209,7 @@ definitions: Geographic area. Shall be absent if the "civicAddressElement" attribute is present. The content of this attribute shall follow the provisions for the "Polygon" geometry object as defined in IETF RFC 7946, for which the "type" member shall be set to the value "Polygon". - If both "countryCode" and "area" are present, no conflicts should exist between the values of these two attributes. - In case of conflicts, the API producer (i.e. the NFVO) shall disregard parts of the geographic area signalled - by "area" that are outside the boundaries of the country signalled by "countryCode". If "countryCode" is absent, - it is solely the "area" attribute that defines the location constraint. + See note. type: object VnfLocationConstraint: @@ -2045,6 +2217,12 @@ definitions: This type represents the association of location constraints to a VNF instance to be created according to a specific VNF profile. It shall comply with the provisions defined in Table 6.5.3.20-1. + + NOTE: these constraints are typically determined by the OSS/BSS from + service requirements (e.g. latency requirements, regulatory requirements). + The NFVO can map such location constraints to eligible NFVI-PoPs/resource + zones where the VNF instance is to be created. + type: object required: - vnfProfileId @@ -2058,6 +2236,8 @@ definitions: description: > Defines the location constraints for the VNF instance to be created based on the VNF profile. + + See note. $ref: "#/definitions/LocationConstraints" VnfInstanceData: @@ -2136,6 +2316,8 @@ definitions: description: > This type represents a request for the scale NS operation. Either the parameter scaleNsData or the parameter scaleVnfData, but not both shall be provided + + NOTE: Either the parameter scaleNsData or the parameter scaleVnfData, but not both shall be provided. type: object required: - scaleType @@ -2159,11 +2341,13 @@ definitions: description: > The necessary information to scale the referenced NS instance. It shall be present when scaleType = SCALE_NS. + See note. $ref: "#/definitions/ScaleNsData" scaleVnfData: description: > The necessary information to scale the referenced NS instance. It shall be present when scaleType = SCALE_VNF. + See note. type: array items: $ref: "#/definitions/ScaleVnfData" @@ -2176,8 +2360,16 @@ definitions: UpdateNsRequest: description: > - This operation supports the update of a NS instance, - It shall comply with the provisions defined in Table 6.5.2.12-1. + This operation supports the update of a NS instance operation. + + NOTE 1: If a VNF instance is removed from an NS and this NS was the last one for which this VNF instance was a + part, the VNF instance is terminated by the NFVO. + NOTE 2: It depends on the VNF capabilities, and is declared in the VNFD whether the operation is supported for + a particular VNF. + NOTE 3: The operation might be service-disruptive. + NOTE 4: For each of the referred vnfInstanceId in the terminateVnfData, there shall be a corresponding value + in the removeVnfInstanceId. + type: object required: - updateType @@ -2207,13 +2399,9 @@ definitions: * ADD_PNF: Adding PNF * MODIFY_PNF: Modifying PNF * REMOVE_PNF: Removing PNF - * CREATE_VNF_SNAPSHOT: Creating VNF Snapshots of VNF instances belonging to the NS instance. - It depends on the VNF capabilities, and is declared in the VNFD whether the operation is supported for a particular VNF. - * REVERT_VNF_TO_SNAPSHOT: Reverting a VNF instance belonging to the NS instance to a VNF Snapshot. - It depends on the VNF capabilities, and is declared in the VNFD whether the operation is supported for a particular VNF. - The operation might be service-disruptive. - * DELETE_VNF_SNAPSHOT_INFO: Deleting available VNF Snapshot information for a VNF instance belonging to the NS instance. - It depends on the VNF capabilities, and is declared in the VNFD whether the operation is supported for a particular VNF. + * CREATE_VNF_SNAPSHOT: Creating VNF Snapshots of VNF instances belonging to the NS instance. See note 2 + * REVERT_VNF_TO_SNAPSHOT: Reverting a VNF instance belonging to the NS instance to a VNF Snapshot. See note 2 and note 3 + * DELETE_VNF_SNAPSHOT_INFO: Deleting available VNF Snapshot information for a VNF instance belonging to the NS instance. See note 2 * MODIFY_WAN_CONNECTION_INFO: Modify WAN related connectivity information. * CREATE_NS_VIRTUAL_LINK: Create an NsVirtualLink instance. * DELETE_NS_VIRTUAL_LINK: Delete an NsVirtualLink instance. @@ -2258,10 +2446,7 @@ definitions: Identifies an existing VNF instance to be removed from the NS instance. It contains the identifier(s) of the VNF instances to be removed. It shall be present only if - updateType = "REMOVE_VNF." Note: If a VNF instance - is removed from a NS and this NS was the last one for - which this VNF instance was a part, the VNF instance is - terminated by the NFVO. + updateType = "REMOVE_VNF.". See note 1. type: array items: $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" @@ -2273,6 +2458,16 @@ definitions: type: array items: $ref: "#/definitions/InstantiateVnfData" + terminateVnfData: + description: > + Specifies the details to terminate VNF instance(s). + It shall be present only if updateType = "REMOVE_VNF" + and if the VNF instance(s) is(are) to be terminated as + part of this operation. + See notes 1 and 4. + type: array + items: + $ref: "#/definitions/TerminateVnfData" changeVnfFlavourData: description: > Identifies the new DF of the VNF instance to be @@ -2453,21 +2648,33 @@ definitions: This type represents the information related to a SAP of a NS. The InstantiateVnfData data type specifies the parameters that are needed for VNF instantiation. This information element is used for the bottom-up NS creation when the OSS/BSS explicitly requests VNF instantiation for a given NS. When the NFVO invokes the Instantiate VNF - update operation, a set of these parameters are then passed by the NFVO to the VNFM. It shall comply with the - provisions defined in Table 6.5.3.24-1. + update operation, a set of these parameters are then passed by the NFVO to the VNFM. + + NOTE 1: It is possible to have several ExtManagedVirtualLinkData for the same VNF internal + VL in case of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkData + corresponding to the same VNF internal VL shall indicate so by referencing to the same + VnfVirtualLinkDesc and externally-managed multi-site VL instance (refer to clause 6.5.3.27). + NOTE 2: If vnfdId and vnfFlavourId (and vnfInstantiationLevelId, if provided) are present, + there should be only one vnfProfile that matches the vnfdId and vnfFlavourId (and vnfInstantiationLevelId, + if present) in the NS deployment flavour specified in the NSD associated to the NS instance to which + the present operation is triggered. In the case there is more than one matching vnfProfile, the NFVO + may select a matching vnfProfile based on other information, such as external VL. + NOTE 3: Either the attribute triple "vnfdId, vnfFlavourId and vnfInstantiationLevelId + (if provided)" or the attribute "vnProfileId" shall be present, but not both. type: object - required: - - vnfdId - - vnfFlavourId properties: vnfdId: description: > Information sufficient to identify the VNFD which defines the VNF to be instantiated. + + See note 2 and 3. $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" vnfFlavourId: description: > Identifier of the VNF deployment flavor to be instantiated. + + See note 2 and 3. $ref: "../../definitions/SOL005_def.yaml#/definitions/IdentifierInVnfd" vnfInstantiationLevelId: description: > @@ -2475,7 +2682,15 @@ definitions: flavor to be instantiated. If not present, the default instantiation level as declared in the VNFD is instantiated. + + See note 2 and 3. $ref: "../../definitions/SOL005_def.yaml#/definitions/IdentifierInVnfd" + vnfProfileId: + description: > + Identifier of (Reference to) a vnfProfile defined in the NSD which is used for instantiating the VNF. + + See note 3. + $ref: "#/definitions/IdentifierInNsd" vnfInstanceName: description: > Human-readable name of the VNF instance to be created. @@ -2487,16 +2702,14 @@ definitions: extVirtualLinks: description: > Information about external VLs to connect the VNF to. + type: array items: $ref: "#/definitions/ExtVirtualLinkData" extManagedVirtualLinks: description: > Information about internal VLs that are managed by other entities than the VNFM. - It is possible to have several ExtManagedVirtualLinkData for the same VNF internal VL in case of a multi-site - VNF spanning several VIMs. The set of ExtManagedVirtualLinkData corresponding to the same VNF internal VL shall - indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed multi-site VL instance - (refer to clause 6.5.3.27). + See note 1. type: array items: $ref: "#/definitions/ExtManagedVirtualLinkData" @@ -2507,9 +2720,13 @@ definitions: type: string vnfConfigurableProperties: description: > - Values for the "vnfConfigurableProperties" input + If present, this attribute provides values for the configurable + properties declared in the VNFD. These values will override + the default values if default values are also declared in the VNFD. + + It provides values for the "vnfConfigurableProperties" input parameter of the Instantiate VNF operation - defined in ETSI GS NFV-SOL 003 [4]. + defined in ETSI GS NFV-SOL 003. $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs" additionalParams: description: > @@ -2518,11 +2735,19 @@ definitions: $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs" metadata: description: > + If present, this attribute provides values for metadata. Metadata + can but need not be declared in the VNFD. These values will override + the default values if default values are also declared in the VNFD. + This attribute provides values for the "metadata" input parameter of the Create VNF Identifier operation. $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs" extensions: description: > + If present, this attribute provides values for extensions declared + in the VNFD. These values will override the default values if default + values are also declared in the VNFD. + This attribute provides values for the "extensions" input parameter of the Instantiate VNF operation. $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs" @@ -2538,7 +2763,17 @@ definitions: description: > The type represents the information that is requested to be changed deployment flavor for an existing VNF instance. - It shall comply with the provisions defined in Table 6.5.3.25-1. + NOTE 1: The indication of externally-managed internal VLs + is needed in case networks have been pre-configured for use with certain VNFs, + for instance to ensure that these networks have certain properties such as + security or acceleration features, or to address particular network topologies. + The present document assumes that externally-managed internal VLs are managed + by the NFVO and created towards the VIM. + NOTE 2: It is possible to have several ExtManagedVirtualLinkData for the same + VNF internal VL in case of a multi-site VNF spanning several VIMs. The set + of ExtManagedVirtualLinkData corresponding to the same VNF internal VL shall + indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed + multi-site VL instance (refer to clause 6.5.3.27). type: object required: - vnfInstanceId @@ -2568,14 +2803,7 @@ definitions: extManagedVirtualLinks: description: > information about internal VLs that are managed by NFVO. - The indication of externally-managed internal VLs is needed in case networks have been pre-configured for use - with certain VNFs, for instance to ensure that these networks have certain properties such as security or - acceleration features, or to address particular network topologies. The present document assumes that - xternally-managed internal VLs are managed by the NFVO and created towards the VIM. - It is possible to have several ExtManagedVirtualLinkData for the same VNF internal VL in case of a multi-site - VNF spanning several VIMs. The set of ExtManagedVirtualLinkData corresponding to the same VNF internal VL shall - indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed multi-site VL instance - (refer to clause 6.5.3.27). + See note 1 and note 2. type: array items: $ref: "#/definitions/ExtManagedVirtualLinkData" @@ -2599,8 +2827,16 @@ definitions: OperateVnfData: description: > This type represents a VNF instance for which the operational state - needs to be changed and the requested new state. It - shall comply with the provisions defined in Table 6.5.3.31-1. + needs to be changed and the requested new state. + NOTE: The "stopType" and "gracefulStopTimeout" attributes shall be absent, + when the "changeStateTo" attribute is equal to "STARTED". The "gracefulStopTimeout" + attribute shall be present, when the "changeStateTo" attribute is equal to "STOPPED" + and the "stopType" attribute is equal to "GRACEFUL". The "gracefulStopTimeout" + attribute shall be absent, when the "changeStateTo" attribute is equal to + "STOPPED" and the "stopType" attribute is equal to "FORCEFUL". The request + shall be treated as if the "stopType" attribute was set to "FORCEFUL", when + the "changeStateTo" attribute is equal to "STOPPED" and the "stopType" attribute + is absent. type: object required: - vnfInstanceId @@ -2617,13 +2853,14 @@ definitions: $ref: "#/definitions/OperationalStates" stopType: description: > - It signals whether forceful or graceful stop is requested. + It signals whether forceful or graceful stop is requested. + See note. $ref: "#/definitions/StopType" gracefulStopTimeout: description: > The time interval (in seconds) to wait for the VNF to be taken out of service during graceful stop, before - stopping the VNF. + stopping the VNF. See note. type: integer additionalParam: description: > @@ -2687,6 +2924,7 @@ definitions: description: > Modifications to entries in the "vnfConfigurableProperties" attribute in "VnfInstance", as defined below in clause 6.5.3.57. + In addition, the provisions in clause 6.7 shall apply. $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs" metadata: description: > @@ -2695,6 +2933,7 @@ definitions: extensions: description: > Modifications to entries in the "extensions" attribute in "VnfInstance", as defined below in clause 6.5.3.57. + In addition, the provisions in clause 6.7 shall apply. $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs" ChangeExtVnfConnectivityData: @@ -2736,7 +2975,7 @@ definitions: $ref: "#/definitions/ExtVirtualLinkData" additionalParams: description: > - Additional parameters passed by the OSS as input to + Additional parameters passed by the OSS/BSS as input to the external connectivity change process, specific to the VNF instance being changed. $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs" @@ -2859,28 +3098,30 @@ definitions: This type contains information used to create or modify NFP instance parameters for the update of an existing VNFFG instance. It shall comply with the provisions defined in Table 6.5.3.38-1. + NOTE 1: It shall be present for modified NFPs and shall be absent for the new NFP. + NOTE 2: It shall be present for the new NFP, and it may be present otherwise. + NOTE 3: At least a CP or an nfpRule shall be present. + NOTE 4: When multiple identifiers are included, the position of the identifier + in the cpGroup value specifies the position of the group in the path. type: object properties: nfpInfoId: description: > Identifier of the NFP to be modified. It shall be present for modified NFPs and shall be absent for the new NFP. - It shall be present for modified NFPs and shall be absent - for the new NFP. + See note 1. $ref: "#/definitions/IdentifierInNs" nfpName: description: > Human readable name for the NFP. It shall be present for the new NFP, and it may be present otherwise. - It shall be present for the new NFP, and it may be - present otherwise. + See note 2. type: string description: description: > Human readable description for the NFP. It shall be present for the new NFP, and it may be present otherwise. - It shall be present for the new NFP, and it may be - present otherwise. + See note 2. type: string cpGroup: description: > @@ -2888,10 +3129,7 @@ definitions: Cardinality can be 0 if only updated or newly created NFP classification and selection rule which applied to an existing NFP is provided. - At least a CP or an nfpRule shall be present. - When multiple identifiers are included, the position of - the identifier in the cpGroup value specifies the position - of the group in the path. + See note 3 and 4. type: array items: $ref: "#/definitions/CpGroupInfo" @@ -2906,6 +3144,9 @@ definitions: in order for the NFP to be applicable to the packet. The condition acts as a flow classifier and it is met only if all the values expressed in the condition are matched by those in the packet. It shall comply with the provisions defined in Table 6.5.3.40-1. + + NOTE: At least one attribute shall be present. If multiple attributes are present, a logical "AND" + operation shall be applied to those attributes when matching packets against the rule. type: object anyOf: - required: @@ -2933,15 +3174,21 @@ definitions: properties: etherDestinationAddress: description: > - Indicates a destination Mac address. + Indicates a destination Mac address. See note. $ref: "#/definitions/MacAddress" etherSourceAddress: description: > - Indicates a source Mac address. + Indicates a source Mac address. See note. $ref: "#/definitions/MacAddress" etherType: description: > - Human readable description for the VNFFG. + Indicates the protocol carried over the Ethernet layer. + + Permitted values: + - IPV4 + - IPV6 + + See note. type: string enum: - IPV4 @@ -2949,21 +3196,23 @@ definitions: vlanTag: description: > Indicates a VLAN identifier in an IEEE 802.1Q-2018 - tag [6] Multiple tags can be included for QinQ stacking. See note. + tag Multiple tags can be included for QinQ stacking. See note. type: array items: $ref: "../../definitions/SOL005_def.yaml#/definitions/String" protocol: description: > - Indicates the L4 protocol, For IPv4 [7] this + Indicates the L4 protocol, For IPv4 this corresponds to the field called "Protocol" to identify - the next level protocol. For IPv6 [28] this + the next level protocol. For IPv6 this corresponds to the field is called the "Next Header" field. Permitted values: Any keyword defined in the IANA - protocol registry [1], e.g.: + protocol registry, e.g.: TCP UDP ICMP + + See note. type: string enum: - TCP @@ -2971,32 +3220,39 @@ definitions: - ICMP dscp: description: > - For IPv4 [7] a string of "0" and "1" digits that + For IPv4 a string of "0" and "1" digits that corresponds to the 6-bit Differentiated Services Code Point (DSCP) field of the IP header. - For IPv6 [28] a string of "0" and "1" digits that + For IPv6 a string of "0" and "1" digits that corresponds to the 6 differentiated services bits of - the traffic class header field + the traffic class header field. + + See note. type: string sourcePortRange: description: > - Indicates a range of source ports + Indicates a range of source ports. + See note. $ref: "#/definitions/PortRange" destinationPortRange: description: > Indicates a range of destination ports. + See note. $ref: "#/definitions/PortRange" sourceIpAddressPrefix: description: > Indicates the source IP address range in CIDR format. + See note. $ref: "#/definitions/IpAddressPrefix" destinationIpAddressPrefix: description: > Indicates the destination IP address range in CIDR format. + See note. $ref: "#/definitions/IpAddressPrefix" extendedCriteria: description: > Indicates values of specific bits in a frame. + See note. type: array items: $ref: "#/definitions/Mask" @@ -3084,6 +3340,7 @@ definitions: This type specifies an PNF to be modified in the NS instance. It shall comply with the provisions defined in Table 6.5.3.15-1. + NOTE: At least one attribute shall be present. type: object required: - pnfId @@ -3099,11 +3356,11 @@ definitions: $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" pnfName: description: > - Name of the PNF. + Name of the PNF. See note. type: string cpData: description: > - Address assigned for the PNF external CP(s). + Address assigned for the PNF external CP(s). See note. type: array items: $ref: "#/definitions/PnfExtCpData" @@ -3112,65 +3369,70 @@ definitions: description: > This type provides information about added, deleted, modified and temporary VLs. + NOTE: The resource handles of the affected NS link ports can be + found by dereferencing the identifiers in the "linkPortIds" attribute. type: object required: - - id - - virtualLinkDescId + - nsVirtualLinkInstanceId + - nsVirtualLinkDescId + - vlProfileId - changeType - - networkResource + - changeResult properties: - id: + nsVirtualLinkInstanceId: description: > - Identifier of the virtual link instance, identifying the applicable - "vnfVirtualLinkResourceInfo" entry in the "VnfInstance" data type. - $ref: "#/definitions/IdentifierInVnf" - virtualLinkDescId: + Identifier of the VL Instance. + $ref: "#/definitions/IdentifierInNs" + nsVirtualLinkDescId: description: > - Identifier of the related VLD in the VNFD. - $ref: "../../definitions/SOL005_def.yaml#/definitions/IdentifierInVnfd" + Identifier of the VLD in the NSD for this VL. + $ref: "../../definitions/SOL005_def.yaml#/definitions/IdentifierInNsd" + vlProfileId: + description: > + Name of the VL profile. + $ref: "../../definitions/SOL005_def.yaml#/definitions/IdentifierInNsd" 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. + * ADD + * DELETE + * MODIFY + * ADD_LINK_PORT + * REMOVE_LINK_PORT type: string enum: - - ADDED - - REMOVED - - MODIFIED - - TEMPORARY - - LINK_PORT_ADDED - - LINK_PORT_REMOVED + - ADD + - DELETE + - MODIFY + - ADD_LINK_PORT + - REMOVE_LINK_PORT linkPortIds: description: > - Identifiers of the link ports of the affected VL related to the change. - Each identifier references an "NsLinkPortInfo" structure. - Shall be set when changeType is equal to "ADD_LINK_PORT" or "REMOVE_LINK_PORT", and the related "NsLinkPortInfo" - structures are present (case "add") or have been present (case "remove") in the NsVirtualLinkInfo structure - that is represented by the "virtualLink¬Info" attribute in the "NsInstance" structure. - The resource handles of the affected NS link ports can be found by dereferencing the identifiers in the - "linkPortIds" attribute. + Identifiers of the link ports of the affected VL related to the change. Each identifier references an + "NsLinkPortInfo" structure. + + Shall be set when changeType is equal to "ADD_LINK_PORT" or "REMOVE_LINK_PORT", and the related + "NsLinkPortInfo" structures are present (case "add") or have been present (case "remove") in + the "NsVirtualLinkInfo" structure that is represented by the "virtualLink¬Info" attribute + in the "NsInstance" structure. + See note. + type: array items: $ref: "../../definitions/SOL005_def.yaml#/definitions/IdentifierInNs" - networkResource: - description: > - Reference to the VirtualNetwork resource. Detailed information is - (for new and modified resources) or has been (for removed - resources) available from the VIM. - $ref: "../../definitions/SOL005_def.yaml#/definitions/ResourceHandle" - metadata: + changeResult: description: > - Metadata about this resource. - The content of this attribute shall be a copy of the content of the - "metadata" attribute of the VnfVirtualLinkResourceInfo structure. - $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs" + Signals the result of change identified by the + "changeType" attribute. + Permitted values: + * COMPLETED + * ROLLED_BACK + * FAILED + type: string + enum: + - COMPLETED + - ROLLED_BACK + - FAILED AffectedVirtualStorage: description: > @@ -3222,8 +3484,11 @@ definitions: AffectedVnf: description: > - This type provides information about added, deleted and modified VNFs. - It shall comply with the provisions in Table 6.5.3.2-1. + This type provides information about added, deleted and modified VNFs. + + NOTE: At least one of the attributes "changedVnfInfo", "changedExtConnectivity" + or "modificationsTriggeredByVnfPkgChange" shall be present. Not more than one + of "changedVnfInfo" and "modificationsTriggeredByVnfPkgChange" shall be present. type: object required: - vnfInstanceId @@ -3324,20 +3589,22 @@ definitions: Information about the changed VNF instance information, including configurable properties, if applicable. + See note. $ref: "#/definitions/ModifyVnfInfoData" changedExtConnectivity: description: > - Information about changed external connectivity, - if applicable. + Information about changed external connectivity, if applicable. + Only information about external VL instances that have been + added or modified shall be provided. See note. type: array items: $ref: "#/definitions/ExtVirtualLinkInfo" modificationsTriggeredByVnfPkgChange: description: > - Information about performed changes of "VnfInstance" attributes triggered by changing the current - VNF package, if applicable. Shall be absent if the "operation" attribute is different from "CHANGE_VNFPKG". - At least one of the attributes "changedVnfInfo", "changedExtConnectivity" or "modificationsTriggeredByVnfPkgChange" - shall be present. Not more than one of "changedVnfInfo" and "modificationsTriggeredByVnfPkgChange" shall be present. + Information about performed changes of "VnfInstance" attributes + triggered by changing the current VNF package, if applicable. + Shall be absent if the "operation" attribute is different from "CHANGE_VNFPKG". + See note. $ref: "#/definitions/ModificationsTriggeredByVnfPkgChange" AffectedPnf: @@ -3733,6 +4000,9 @@ definitions: 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). + + NOTE: The permitted values of the "notificationTypes" attribute are spelled exactly as the names + of the notification types to facilitate automated code generation systems. type: object properties: nsInstanceSubscriptionFilter: @@ -3743,10 +4013,13 @@ definitions: description: > Match particular notification types. Permitted values: - - NsLcmOperationOccurenceNotification + - NsLcmOperationOccurrenceNotification - NsIdentifierCreationNotification - NsIdentifierDeletionNotification + - NsLcmCapacityShortageNotification - NsChangeNotification + + See note. type: array items: type: string @@ -3779,6 +4052,14 @@ definitions: type: array items: $ref: "#/definitions/LcmOperationStateType" + affectedNsInstanceIds: + description: > + Match particular identifiers of the NS instance(s) related to the operation occurrence that were affected by + the shortage as reported in notifications of type NsLcmCapacityShortageNotification. + May be present if the "notificationTypes" attribute contains the value "NsLcmCapacityShortageNotification", + and shall be absent otherwise. + items: + $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" nsComponentTypes: description: > Match particular NS component types for the @@ -3830,6 +4111,15 @@ definitions: ScaleNsData: description: > This type represents the information to scale a NS. + NOTE 1: No more than two attributes between vnfInstanceToBeAdded, + vnfInstanceToBeRemoved, scaleNsByStepsData and scaleNsToLevelData shall be present. + In case of two, the attributes shall be vnfInstanceToBeAdded and vnfInstanceToBeRemoved. + NOTE 2: The DF of the VNF instance shall match the VNF DF present in the associated VNF + Profile of the new NS flavour. + NOTE 3: This functionality is the same as the one provided by the Update NS operation when + the AddVnf update type is selected (see clause 7.3.5). + NOTE 4: This functionality is the same as the one provided by the Update NS operation when + the RemoveVnf update type is selected (see clause 7.3.5). type: object properties: vnfInstanceToBeAdded: @@ -3838,6 +4128,7 @@ definitions: instance as part of the scaling operation. If needed, the VNF Profile to be used for this VNF instance may also be provided. + See note 1, note 2 and note 3. type: array items: $ref: "#/definitions/VnfInstanceData" @@ -3845,6 +4136,7 @@ definitions: description: > The VNF instance to be removed from the NS instance as part of the scaling operation. + See note 1 and note 4. type: array items: $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" @@ -3852,24 +4144,26 @@ definitions: description: > The information used to scale an NS instance by one or more scaling steps. + See note 1. $ref: "#/definitions/ScaleNsByStepsData" scaleNsToLevelData: description: > The information used to scale an NS instance to a target size. + See note 1. $ref: "#/definitions/ScaleNsToLevelData" additionalParamsForNs: description: > Allows the OSS/BSS to provide additional parameter(s) at the NS level necessary for the NS scaling (as opposed to the VNF level, which is - covered in additionalParamForVnf). + covered in additionalParamsForVnf). $ref: "#/definitions/ParamsForVnf" additionalParamsForVnf: description: > Allows the OSS/BSS to provide additional parameter(s) per VNF instance (as opposed to the NS level, which is covered in - additionalParamforNs). This is for VNFs that are + additionalParamsforNs). This is for VNFs that are to be created by the NFVO as part of the NS scaling and not for existing VNF that are covered by the scaleVnfData. @@ -3897,9 +4191,17 @@ definitions: description: > This type represents defines the information to scale a VNF instance to a given level, or to scale a VNF instance by steps. + NOTE 1: ETSI GS NFV-IFA 010 (available at https://www.etsi.org/deliver/etsi_gs/NFV-IFA/001_099/010/03.02.01_60/gs_NFV-IFA010v030201p.pdf) + specifies that the lifecycle management operations that expandor contract a VNF instance + include scale in, scale out, scale up and scale down. Vertical scaling (scale up, scale down) + is not supported in the present document. + NOTE 2: Either scaletoLevelData or scaleByStepData but not both shall be present. The scaleByStepData + is used for scale out/in type of scaling, and the scaleToLevelData is used for scale to instantiation/scale + level type of scaling. + type: object required: - - vnfInstanceid + - vnfInstanceId - scaleVnfType oneOf: - required: @@ -3920,7 +4222,7 @@ definitions: - SCALE_TO_INSTANTIATION_LEVEL - SCALE_TO_SCALE_LEVEL(S) The set of types actually supported depends on the - capabilities of the VNF being managed. + capabilities of the VNF being managed. See note 1. type: string enum: - SCALE_OUT @@ -3933,7 +4235,7 @@ definitions: $ref: "#/definitions/ScaleToLevelData" scaleByStepData: description: > - The information used for scaling by steps. + The information used for scaling by steps. See note 2. $ref: "#/definitions/ScaleByStepData" ScaleNsByStepsData: @@ -3973,6 +4275,7 @@ definitions: an NS instantiation level or as a list of NS scale levels, one per NS scaling aspect, of the current DF. The NS instantiation levels, the NS scaling aspects and their corresponding NS scale levels applicable to the NS instance are declared in the NSD. + NOTE: Either nsInstantiationLevel or nsScaleInfo, but not both, shall be present. type: object oneOf: - required: @@ -3983,12 +4286,12 @@ definitions: nsInstantiationLevel: description: > Identifier of the target NS instantiation level of the - current DF to which the NS instance is requested to be scaled. + current DF to which the NS instance is requested to be scaled. See note. $ref: "#/definitions/IdentifierInNsd" nsScaleInfo: description: > For each NS scaling aspect of the current DF, defines - the target NS scale level to which the NS instance is to be scaled. + the target NS scale level to which the NS instance is to be scaled. See note. type: array items: $ref: "#/definitions/NsScaleInfo" @@ -3998,7 +4301,8 @@ definitions: This type describes the information used to scale a VNF instance to a target size. The target size is either expressed as an instantiation level of that DF as defined in the VNFD, or given as a list of scale levels, one per scaling aspect of that DF. Instantiation levels and scaling aspects are declared in the VNFD. The NFVO shall then invoke the - ScaleVnfToLevel operation towards the appropriate VNFM.. + ScaleVnfToLevel operation towards the appropriate VNFM. + NOTE: Either the instantiationLevelId attribute or the scaleInfo attribute shall be included. type: object anyOf: - required: @@ -4009,13 +4313,13 @@ definitions: vnfInstantiationLevelId: description: > Identifier of the target instantiation level of the current - deployment flavor to which the VNF is requested to be scaled. + deployment flavor to which the VNF is requested to be scaled. See note. $ref: "../../definitions/SOL005_def.yaml#/definitions/IdentifierInVnfd" vnfScaleInfo: description: > For each scaling aspect of the current deployment flavor, indicates the target scale level to which the VNF - is to be scaled. + is to be scaled. See note. type: array items: $ref: "#/definitions/VnfScaleInfo" @@ -4030,6 +4334,7 @@ definitions: This type describes the information to scale a VNF instance by steps. The NFVO shall then invoke the Scale VNF operation towards the appropriate VNFM. + NOTE: A scaling step is the smallest unit by which a VNF instance can be scaled w.r.t a particular scaling aspect. type: object required: - aspectId @@ -4046,7 +4351,7 @@ definitions: The VNF provider defines in the VNFD whether or not a particular VNF supports performing more than one step at a time. Such a property in the VNFD applies for all - instances of a particular VNF. + instances of a particular VNF. See note. type: integer default: 1 additionalParams: @@ -4128,28 +4433,64 @@ definitions: LcmOpOccStatusForChangeNotificationType: description: > - The enumeration LcmOpOccStatusForChangeNotificationType represents the status of the lifecycle management - operation occurrence that impacts the NS component and triggers an NS change notification. It shall comply with the - provisions defined in Table 6.5.4.7-1. - Value | Description - ------|------------ - START | The impact on the NS component is identified. - COMPLETED | The impact on the NS component stops and related lifecycle operation completes successfully. - PARTIALLY_COMPLETED | The impact on the NS component stops and related lifecycle operation partially completes. Inconsistency state may exist on the NS component. - FAILED | The impact on the NS component stops and related lifecycle operation fails. Inconsistency state may exist for the NS component. - ROLLED_BACK | The impact on the NS component stops and related lifecycle operation is rolled back. + The enumeration LcmOpNameForChangeNotificationType represents the name of the lifecycle operation that impacts the + NS component and trigger an NS change notification. It shall comply with the provisions defined in table 6.5.4.6-1. + + Value | Description + VNF_INSTANTIATE Represents the "Instantiate VNF" LCM operation. + VNF_SCALE Represents the "Scale VNF" LCM operation. + VNF_SCALE_TO_LEVEL Represents the "Scale VNF to Level" LCM operation. + VNF_CHANGE_FLAVOUR Represents the "Change VNF Flavour" LCM operation. + VNF_TERMINATE Represents the "Terminate VNF" LCM operation. + VNF_HEAL Represents the "Heal VNF" LCM operation. + VNF_OPERATE Represents the "Operate VNF" LCM operation. + VNF_CHANGE_EXT_CONN Represents the "Change external VNF connectivity" LCM operation. + VNF_MODIFY_INFO Represents the "Modify VNF Information" LCM operation. + VNF_CREATE_SNAPSHOT Represents the "Create VNF Snapshot" LCM operation. + VNF_REVERT_TO_SNAPSHOT Represents the "Revert To VNF Snapshot" LCM operation. + VNF_CHANGE_VNFPKG Represents the "Change current VNF package" LCM operation. + NS_INSTANTIATE Represents the "Instantiate NS" LCM operation. + NS_SCALE Represents the "Scale NS" LCM operation. + NS_UPDATE Represents the "Update NS" LCM operation. + NS_TERMINATE Represents the "Terminate NS" LCM operation. + NS_HEAL Represents the "Heal NS" LCM operation. + type: string enum: - - START - - COMPLETED - - PARTIALLY_COMPLETED - - FAILED - - ROLLED_BACK + - VNF_INSTANTIATE + - VNF_SCALE + - VNF_SCALE_TO_LEVEL + - VNF_CHANGE_FLAVOUR + - VNF_TERMINATE + - VNF_HEAL + - VNF_OPERATE + - VNF_CHANGE_EXT_CONN + - VNF_MODIFY_INFO + - VNF_CREATE_SNAPSHOT + - VNF_REVERT_TO_SNAPSHOT + - VNF_CHANGE_VNFPKG + - NS_INSTANTIATE + - NS_SCALE + - NS_UPDATE + - NS_TERMINATE + - NS_HEAL + NsLcmOpOcc: description: > This type represents a request a NS lifecycle operation occurrence. It shall comply with the provisions defined in Table 6.5.2.3-1. + + NOTE 1: This allows the OSS/BSS to obtain a copy of the latest "result" notification if it has not received + it due to an error. If the notification represents the successful result of a lifecycle operation, at least + an affectedVnf, or affectedPnf, or affectedVl, or affectedVnffg or affectedNs, or affectedSap shall be present. + + NOTE 2: A coordination action has timed out if the NFVO has not been able to read the "Individual coordination + action" resource within a timeout interval after requesting the coordination to be started or to be cancelled. + The length of the timeout interval is defined by means outside the scope of the present document + + NOTE 3: The list of rejected coordinations may be garbage collected if the LCM operation occurrence has reached + a terminal state, i.e. one of "COMPLETED", "FAILED", “PARTIALLY COMPLETED” and "ROLLED_BACK". type: object required: - id @@ -4165,12 +4506,22 @@ definitions: id: description: > Identifier of this NS lifecycle operation occurrence. + NOTE 1: This allows the OSS/BSS to obtain a copy of the latest "result" + notification if it has not received it due to an error. If the notification + represents the successful result of a lifecycle operation, at least an affectedVnf, + or affectedPnf, or affectedVl, or affectedVnffg or affectedNs, or affectedSap + shall be present. + + NOTE 2: A coordination action has timed out if the NFVO has not been able to read + the "Individual coordination action" resource within a timeout interval after requesting + the coordination to be started or to be cancelled. The length of the timeout interval + is defined by means outside the scope of the present document. $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" operationState: description: > The state of the NS LCM operation. $ref: "#/definitions/NsLcmOperationStateType" - statusEnteredTime: + stateEnteredTime: description: > Date-time when the current state has been entered. $ref: "../../definitions/SOL005_def.yaml#/definitions/DateTime" @@ -4199,7 +4550,7 @@ definitions: description: > Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of - the related LCM operation. + the related LCM operation. In addition, the provisions in clause 6.7 shall apply. The following mapping between lcmOperationType and the data type of this attribute shall apply: - INSTANTIATE: InstantiateNsRequest @@ -4250,7 +4601,7 @@ definitions: description: > Information about the VNF instances that were affected during the lifecycle operation, if this notification - represents the result of a lifecycle operation. + represents the result of a lifecycle operation. See note 1. type: array items: $ref: "#/definitions/AffectedVnf" @@ -4258,7 +4609,7 @@ definitions: description: > Information about the PNF instances that were affected during the lifecycle operation, if this notification - represents the result of a lifecycle operation. + represents the result of a lifecycle operation. See note 1. type: array items: $ref: "#/definitions/AffectedPnf" @@ -4266,7 +4617,7 @@ definitions: description: > Information about the VL instances that were affected during the lifecycle operation, if this notification - represents the result of a lifecycle operation. + represents the result of a lifecycle operation. See note 1. type: array items: $ref: "#/definitions/AffectedVirtualLink" @@ -4274,7 +4625,7 @@ definitions: description: > Information about the VNFFG instances that were affected during the lifecycle operation, if this notification - represents the result of a lifecycle operation. See note + represents the result of a lifecycle operation. See note 1. type: array items: $ref: "#/definitions/AffectedVnffg" @@ -4282,7 +4633,7 @@ definitions: description: > Information about the nested NS instances that were affected during the lifecycle operation, if this notification - represents the result of a lifecycle operation. See note. + represents the result of a lifecycle operation. See note 1. type: array items: $ref: "#/definitions/AffectedNs" @@ -4290,10 +4641,113 @@ definitions: description: > Information about the nested NS instances that were affected during the lifecycle operation, if this notification - represents the result of a lifecycle operation. See note. + represents the result of a lifecycle operation. See note 1. type: array items: $ref: "#/definitions/AffectedSap" + + lcmCoordinations: + description: > + Information about LCM coordination actions (see clause 12) + related to this LCM operation occurrence. + type: array + items: + type: object + required: + - id + - coordinationActionName + - startTime + - endpointType + properties: + id: + description: > + Identifier of this coordination action. For a terminated coordination action, + this attribute refers to the "id" attribute in the LcmCoord data structure + (see clause 12.5.2.3). For a timed-out or ongoing coordination action, this + attribute refers to the {coordinationId} URI variable in the "Location" header + of the "202 Accepted" HTTP response to the POST request that has initiated the + coordination action (see clause 12.4.2.3.1). + $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" + coordinationActionName: + description: > + Indicator of the actual coordination action. + $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" + coordinationResult: + description: > + The result of executing the coordination action which also implies the action + to be performed by the NFVO as the result of this coordination. + Shall be present if the coordination has been finished. Shall be absent if + the coordination is ongoing or has timed out (see note 2). + $ref: "../../NSLCMCoordination/definitions/SOL005NSLCMCoordination_def.yaml#/definitions/LcmCoordResultType" + + startTime: + description: > + The time when the NFVO has received the confirmation that the coordination action has been started. + $ref: "../../definitions/SOL005_def.yaml#/definitions/DateTime" + endTime: + description: > + The time when the NFVO has received the confirmation that the coordination action has finished or + has been cancelled, or the time when a coordination action has timed out. Shall be present for a + coordination action that has finished or timed out (see note 2) and shall be absent if the + coordination is ongoing. + $ref: "../../definitions/SOL005_def.yaml#/definitions/DateTime" + endpointType: + description: > + The endpoint type used by this coordination action. + Valid values: + - MGMT: coordination with other operation supporting management systems (e.g. OSS/BSS) + type: string + enum: + - MGMT + delay: + description: > + The end of the delay period. + This attribute shall be present if the last known HTTP response related to this coordination has + contained a "Retry-After" header, and shall be absent otherwise. + $ref: "../../definitions/SOL005_def.yaml#/definitions/DateTime" + rejectedLcmCoordinations: + description: > + Information about LCM coordination actions (see clause 12) that were rejected by 503 error which means + they can be tried again after a delay. See note 3. + type: array + items: + type: object + required: + - coordinationActionName + - rejectionTime + - endpointType + - delay + properties: + coordinationActionName: + description: > + Indicator of the actual coordination action. + $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" + rejectionTime: + description: > + The time when the NFVO has received the 503 response that rejects the actual coordination. + $ref: "../../definitions/SOL005_def.yaml#/definitions/DateTime" + endpointType: + description: > + The endpoint type used by this coordination action. + Valid values: + - MGMT: coordination with other operation supporting management systems (e.g. OSS/BSS) + type: string + enum: + - MGMT + delay: + description: > + The end of the delay period, as calculated from the startTime and "Retry-After" header. + $ref: "../../definitions/SOL005_def.yaml#/definitions/DateTime" + warnings: + description: > + Warning messages that were generated while the operation was executing. + + If the operation has included VNF LCM operations or NS LCM coordination + actions and these have resulted in warnings, such warnings should be + added to this attribute. + type: array + items: + type: string _links: description: > Links to resources related to this resource. @@ -4376,6 +4830,16 @@ definitions: IpOverEthernetAddressData: description: > This type represents network address data for IP over Ethernet. + NOTE 1: At least one of "macAddress" or "ipAddresses" shall be present. + NOTE 2: Exactly one of "fixedAddresses", "numDynamicAddresses" or "ipAddressRange" shall be present. + NOTE 3: If the CP instance represents a subport in a trunk, "segmentationId" shall be present. + Otherwise it shall not be present. + NOTE 4: Depending on the NFVI networking infrastructure, the "segmentationId" may indicate + the actual network segment value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport + header of the packets or it may be an identifier used between the application and the NFVI networking + infrastructure to identify the network sub-interface of the trunk port in question. In the latter + case the NFVI infrastructure will map this local "segmentationId" to whatever "segmentationId" is actually + used by the NFVI's transport technology. type: object anyOf: - required: @@ -4386,24 +4850,30 @@ definitions: macAddress: description: > MAC address. If this attribute is not present, it shall be chosen by the NFV MANO. + See note 1. $ref: "#/definitions/MacAddress" + segmentationType: + description: > + Specifies the encapsulation type for the traffics coming in and out of the trunk subport. + Permitted values are: + - VLAN: The subport uses VLAN as encapsulation type. + - INHERIT: The subport gets its segmentation type from the network it is 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. + type: string + enum: + - VLAN + - INHERIT segmentationId: description: > - Identification of the network segment to which the Cp instance connects to. - If the Cp instance represents a subport in a trunk, "segmentationId" shall be present. - Otherwise it shall not be present. - Depending on the NFVI networking infrastructure, the "segmentationId" may indicate the actual network segment - value (e.g. vlan Id, Vxlan segmentation id, etc.) used in the transport header of the packets or it may be an - identifier used between the application and the NFVI networking infrastructure to identify the network sub-interface - of the trunk port in question. In the latter case the NFVI infrastructure will map this local "segmentationId" - to whatever "segmentationId" is actually used by the NFVI’s transport technology. + Identification of the network segment to which the CP instance connects to. See note 3 and note 4. 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. + If this attribute is not present, no IP address shall be assigned. See note 1. type: array items: type: object @@ -4420,7 +4890,9 @@ definitions: type: description: > The type of the IP addresses. - Permitted values: IPV4, IPV6. + Permitted values: + - IPV4 + - IPV6 type: string enum: - IPV4 @@ -4438,8 +4910,7 @@ definitions: description: > Number of dynamic addresses to assign (from the subnet defined by "subnetId" if provided). - Exactly one of "fixedAddresses", "numDynamicAddresses" or - "ipAddressRange" shall be present. + See note 2. type: integer addressRange: description: > @@ -4471,7 +4942,17 @@ definitions: ExtVirtualLinkData: description: > - This type represents an external VL. It shall comply with the provisions defined in Table 6.5.3.26-1. + This type represents an external VL. + + NOTE: A link port is not needed for an external CP instance that exposes a VIP CP in the following cases: + 1. For a VIP CP directly exposed as extCP: + 1.1. no dedicated IP address is allocated as VIP address, as indicated in the VNFD + 1.2. a dedicated IP address is allocated as VIP address, + but the NFVO indicates that no port is needed (createExtLinkPort in VnfExtCpConfig set to false). + 2. For a VIP CP exposed as extCP via a floating IP address: + 2.1. no dedicated IP address is allocated as VIP address, as indicated in the VNFD, + and the VNFC CP associated to the VIP CP is also exposed via a floating IP address. + type: object required: - resourceId @@ -4510,7 +4991,10 @@ definitions: extLinkPorts: description: > Externally provided link ports to be used to connect - external connection points to this external VL. + external connection points to this external VL unless + the extCp exposes a VIP CP and a link port is not needed + for it based on the conditions defined below. + See note. type: array items: $ref: "#/definitions/ExtLinkPortData" @@ -4573,6 +5057,21 @@ definitions: description: > This type represents configuration information for external CPs created from a CPD. + + NOTE 1: In case this identifier refers to a CPD with trunking enabled, the external + CP instances created from this CPD will represent ports in a trunk. + NOTE 2: The map entry value shall be set to "null" in order to delete a "VnfExtCpConfig" + entry identified by a particular key value from the map, i.e. for the disconnection of an + existing external CP instance addressed by cpInstanceId in the deleted map entry from a particular + external virtual link, and deletion of that instance in case it represents a subport. Deleting + the last key from the map removes the affected instance of the "VnfExtCpData" structure from its + parent data structure. + NOTE 3: Within one VNF instance, all VNFC instances created from a particular VDU have the + same external connectivity. Thus, given a particular value of the "cpdId' attribute, there + shall be one "cpConfig" entry for each VNFC instance that has been or can be created from + a VDU which includes a CPD identified by the "cpdId" attribute. If the cpConfig represents + a subport in a trunk, all "cpConfig" entries in this list shall have the same segmentationId, + which means they are connected to the same set of external VLs via the trunk. type: object required: - cpdId @@ -4580,24 +5079,14 @@ definitions: cpdId: description: > The identifier of the CPD in the VNFD. - In case this identifier refers to a CPD with trunking enabled, the external CP instances created from this CPD - will represent ports in a trunk. + See note 1. $ref: "../../definitions/SOL005_def.yaml#/definitions/IdentifierInVnfd" cpConfig: description: > Map of instance data that need to be configured on the CP instances created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). - The map entry value shall be set to "null" in order to delete a "VnfExtCpConfig" entry identified by a - particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed - by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that - instance in case it represents a subport. Deleting the last key from the map removes the affected instance - of the "VnfExtCpData" structure from its parent data structure. - Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. - Thus, given a particular value of the “cpdId’ attribute, there shall be one “cpConfig” entry for each VNFC - instance that has been or can be created from a VDU which includes a CPD identified by the “cpdId” attribute. - If the cpConfig represents a subport in a trunk, all “cpConfig” entries in this list shall have the same - segmentationId, which means they are connected to the same set of external VLs via the trunk. + See note 2 and note 3. type: object additionalProperties: $ref: "#/definitions/VnfExtCpConfig" @@ -4606,6 +5095,7 @@ definitions: description: > This type represents an externally provided link port to be used to connect an external connection point to an external VL. + NOTE: The value of "trunkResourceId" is scoped by the value of "vimConnectionId" in the "resourceHandle" attribute. type: object required: - id @@ -4620,6 +5110,13 @@ definitions: description: > Reference to the virtualised resource realizing this link port. $ref: "../../definitions/SOL005_def.yaml#/definitions/ResourceHandle" + trunkResourceId: + description: > + Identifier of the trunk resource in the VIM. + Shall be present if the present link port corresponds to the parent + port that the trunk resource is associated with. + See note. + $ref: "../../definitions/SOL005_def.yaml#/definitions/IdentifierInVim" VnfExtCpConfig: description: > @@ -4629,6 +5126,19 @@ definitions: external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL. + NOTE 1: The following conditions apply to the attributes "linkPortId" and "cpProtocolData": + - At least one of the "linkPortId" and "cpProtocolData" attributes shall be present for + an external CP instance representing a subport that is to be created, or an external CP instance + that is to be created by creating the corresponding VNFC or VNF instance during the current or + a subsequent LCM operation, or for an existing external CP instance that is to be re-configured + or added to a particular external virtual link. + - If the "cpProtocolData" attribute is absent, the "linkPortId" attribute shall be provided + referencing a pre-created link port with pre-configured address information. + - If both "cpProtocolData" and "linkportId" are provided, the API consumer shall ensure that + the cpProtocolData can be used with the pre-created link port referenced by "linkPortId". + NOTE 2: In case the NFVO manages its own identifier space, the NFVO may remap this identifier + when communicating with the VNFM. If the NFVO knows that there can be an identifier collision + when communicating with the VNFM by using the identifier from the OSS/BSS, the NFVO shall remap it. type: object anyOf: - required: @@ -4640,46 +5150,27 @@ definitions: description: > Value of the key that identifies to the "VnfExtCpConfig" entry that corresponds to the parent port of the trunk. Only present in "VnfExtCpConfig" map structures which provide configuration information for a CP which represents - a subport in a trunk, and if parent ports are supported. + a subport in a trunk, and if parent ports are supported. See note 2. $ref: "#/definitions/IdentifierInVnf" linkPortId: description: > Identifier of a pre-configured link port to which the external CP will be associated. - The following conditions apply to the attributes "linkPortId" and - "cpProtocolData": - * At least one of the "linkPortId" and "cpProtocolData" attributes - shall be present for a to-be-created external CP instance or an - existing external CP instance. - * If the "linkPortId" attribute is absent, the VNFM shall create a - link port. - * If the "cpProtocolData" attribute is absent, the "linkPortId" - attribute shall be provided referencing a pre-created link port, - and the VNFM can use means outside the scope of the present - document to obtain the pre-configured address information for the - connection point from the resource representing the link port. - * If both "cpProtocolData" and "linkportId" are provided, the API - consumer shall ensure that the cpProtocolData can be used with the - pre-created link port referenced by "linkPortId". + See note 1. $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" + createExtLinkPort: + description: > + Indicates the need to create a dedicated link port for the external CP. + If set to True, a link port is created. If set to False, no link port is created. + 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. + type: boolean cpProtocolData: description: > Parameters for configuring the network protocols on the link port that connects the CP to a VL. - The following conditions apply to the attributes "linkPortId" and "cpProtocolData": - * At least one of the "linkPortId" and "cpProtocolData" attributes - shall be present for a to-be-created external CP instance or an - existing external CP instance. - * If the "linkPortId" attribute is absent, the VNFM shall create a - link port. - * If the "cpProtocolData" attribute is absent, the "linkPortId" - attribute shall be provided referencing a pre-created link port, - and the VNFM can use means outside the scope of the present - document to obtain the pre-configured address information for the - connection point from the resource representing the link port. - * If both "cpProtocolData" and "linkportId" are provided, the API - consumer shall ensure that the cpProtocolData can be used with the - pre-created link port referenced by "linkPortId". + See note 1. type: array items: $ref: "#/definitions/CpProtocolData" @@ -4867,6 +5358,7 @@ definitions: description: | This type provides information about the connectivity to the WAN of network resources realizing a VL, e.g., when the VL is deployed on several sites across a WAN. It shall comply with the provisions defined in table 6.5.3.90-1. + NOTE: Either a "nsVirtualLinkInfoId" or a "vnfVirtualLinkResourceInfoId" shall be provided, but not both. type: object required: - wanConnectionInfoId @@ -4884,13 +5376,13 @@ definitions: description: > References the NS VL instance to which the connection information is associated. Shall be present if a corresponding NS VL instance has been created. - Either a "nsVirtualLinkInfoId" or a "vnfVirtualLinkResourceInfoId" shall be provided, but not both. + See note. $ref: "../../definitions/SOL005_def.yaml#/definitions/IdentifierInNs" vnfVirtualLinkResourceInfoId: description: > References the VNF VL instance to which the connection information is associated. Shall be present if a corresponding VNF VL instance has been created. - Either a "nsVirtualLinkInfoId" or a "vnfVirtualLinkResourceInfoId" shall be provided, but not both. + See note. $ref: "../../definitions/SOL005_def.yaml#/definitions/IdentifierInNs" protocolInfo: description: > @@ -4918,15 +5410,11 @@ definitions: items: $ref: "#/definitions/ConnectivityServiceEndpointInfo" - NsLocationConstraint: - description: | - - type: object - WanConnectionData: description: | This type provides information used to connect the comprising network resources realizing a VL, e.g., when the VL is deployed on several sites and across a WAN. It shall comply with the provisions defined in table 6.5.3.80-1. + NOTE: Either a "nsVirtualLink" or a "vnfVirtualLink" shall be provided, but not both. type: object required: - protocolData @@ -4939,7 +5427,7 @@ definitions: nsVirtualLink: description: > Information used to identify the NS VL for which the WAN connectivity data is applicable. - Either a "nsVirtualLink" or a "vnfVirtualLink" shall be provided, but not both. + See note. type: object required: - nsVirtualLinkDescId @@ -4948,6 +5436,7 @@ definitions: nsVirtualLinkDescId: description: > Identifier of the VLD in the NSD from which the VL is created in the case of a multi-site NS VL. + See note. $ref: "../../definitions/SOL005_def.yaml#/definitions/IdentifierInNsd" nsVirtualLinkProfileId: description: > @@ -5114,6 +5603,14 @@ definitions: VnfcSnapshotInfo: description: > This type represents a VNFC Snapshot. It shall comply with the provisions defined in table 6.5.3.77-1. + NOTE 1: The identifier of the compute snapshot resource is assigned during creation of a VNFC + Snapshot being returned from the VIM as output data in the response message of the individual resource + operations. This attribute shall only be present for a VNFC snapshot that has been newly created by the + VNFM as a result of the "Create VNF snapshot task". + NOTE 2: The identifier of the storage snapshot resource is assigned during creation of a VNFC snapshot + being returned from the VIM as output data in the response message of the individual resource operations. + This attribute shall only be present for a VNFC snapshot with an associated storage resource and that + has been newly created by the VNFM as a result of the "Create VNF snapshot task". type: object required: - id @@ -5125,7 +5622,8 @@ definitions: id: description: > Identifier of the information held by the VNFM about a specific VNFC Snapshot. This identifier is allocated by - the VNFM and is unique within the scope of a VNF snapshot. + the VNFM and is unique within the scope of a VNF snapshot. The attribute also identifies the compute snapshot + image associated to this VNFC snapshot within the context of a referred VNF snapshot. $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" vnfcInstanceId: description: > @@ -5147,15 +5645,12 @@ definitions: computeSnapshotResource: description: > Reference to a compute snapshot resource. - The identifier of the compute snapshot resource is assigned during creation of a VNFC Snapshot being returned - from the VIM as output data in the response message of the individual resource operations. - This attribute shall only be present for a VNFC snapshot that has been newly created by the VNFM as a result - of the "Create VNF snapshot task". + See note 1. $ref: "../../definitions/SOL005_def.yaml#/definitions/ResourceHandle" storageSnapshotResources: description: > Reference to the "VirtualStorageResourceInfo" structure in the "VnfInstance" structure that represents - the virtual storage resource. + the virtual storage resource. See note 2. type: array items: type: object @@ -5164,7 +5659,10 @@ definitions: properties: storageResourceId: description: > - Reference to the virtual storage resource. + Reference to the "VirtualStorageResourceInfo" structure in the "VnfInstance" + structure that represents the virtual storage resource. The attribute also + identifies the storage snapshot image associated to this VNFC snapshot within + the context of a referred VNF snapshot. $ref: "#/definitions/IdentifierInVnf" storageSnapshotResources: description: > @@ -5213,6 +5711,7 @@ definitions: This attribute represents the delta (semantics as per IETF RFC 7396 [11], JSON Merge Patch) between the value of the attribute at the start of the "Change current VNF package" operation and the value of the attribute at its completion. + In addition, the provisions in clause 6.7 shall apply. $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs" metadata: description: > @@ -5227,6 +5726,7 @@ definitions: and shall be present if that attribute was modified during the operation. This attribute represents the delta (semantics as per IETF RFC 7396 [11], JSON Merge Patch) between the value of the attribute at the start of the "Change current VNF package" operation and the value of the attribute at its completion. + In addition, the provisions in clause 6.7 shall apply. $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs" vnfdId: description: > @@ -5268,6 +5768,8 @@ definitions: about both pre-provisioned WAN connectivity realized by external entities to NFV-MANO, as well as for the creation of MSCS under NFV-MANO responsibility (i.e., when connectivity is realized when NFVO communicates with the WIM). It shall comply with the provisions defined in table 6.5.3.81-1. + NOTE: At least one of these attributes shall be present. Annex E documents the applicability of certain attributes + depending on the WAN and NFVI-PoP network management and the responsibilities of NFV-MANO in its provisioning. type: object anyOf: - required: @@ -5280,22 +5782,19 @@ definitions: mscsInfo: description: > Information about the pre-provisioned multi-site connectivity service (MSCS), if already available. - At least one of these attributes shall be present. Annex E documents the applicability of certain attributes - depending on the WAN and NFVI-PoP network management and the responsibilities of NFV-MANO in its provisioning. + See note. $ref: "#/definitions/MscsInfo" connectivityServiceEndpointConfigDatas: description: > Configuration data for the network resources in the NFVI-PoP. - At least one of these attributes shall be present. Annex E documents the applicability of certain attributes - depending on the WAN and NFVI-PoP network management and the responsibilities of NFV-MANO in its provisioning. + See note. type: array items: $ref: "#/definitions/ConnectivityServiceEndpointInfo" mscsConfigData: description: > Configuration data for the provisioning of the MSCS, if such MSCS is to be created by NFV-MANO. - At least one of these attributes shall be present. Annex E documents the applicability of certain attributes - depending on the WAN and NFVI-PoP network management and the responsibilities of NFV-MANO in its provisioning. + See note. $ref: "#/definitions/MscsConfigData" MscsInfo: @@ -5456,6 +5955,7 @@ definitions: This type provides information about Layer 2 protocol specific information for the configuration of the NFVI-PoP network gateway to enable the stitching of the intra-site VN to the MSCS over the WAN. It shall comply with the provisions defined in Table 6.5.3.85-1. + NOTE: Either "networkResources" or "vnSegmentsIds" shall be provided, but not both. type: object required: - layer2ConnectionInfo @@ -5629,7 +6129,7 @@ definitions: networkResources: description: > Reference to the VN resource to be forwarded into/from the MSCS. - Either "networkResources" or "vnSegmentsIds" shall be provided, but not both. + See note. type: array items: $ref: "../../definitions/SOL005_def.yaml#/definitions/ResourceHandle" @@ -6041,6 +6541,8 @@ definitions: description: > This type specifies the parameters used for the creation of a new NsVirtualLink instance. It shall comply with the provisions defined in table 6.5.3.95-1. + NOTE: All NsVirtualLink instances of a particular NS DF based on a specific "NsVirtualLinkDesc" + have the same characteristics as they use the same "VirtualLinkProfile". type: object required: - nsVirtualLinkProfileId @@ -6048,14 +6550,17 @@ definitions: nsVirtualLinkProfileId: description: > Identifier of the virtual link profile to be used to create a new NsVirtualLink instance. - All NsVirtualLink instances of a particular NS DF based on a specific "NsVirtualLinkDesc" - have the same characteristics as they use the same "VirtualLinkProfile". + See note. $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" NestedNsLocationConstraint: description: > This type represents the association of location constraints to a nested NS instance to be created according to a specific NS profile. It shall comply with the provisions defined in Table 6.5.3.96-1. + + NOTE: These constraints are typically determined by the OSS/BSS from service requirements (e.g. latency requirements, + regulatory requirements). The NFVO can map such location constraints to eligible NFVI-PoPs/resource zones where + the VNF instances as part of the nested NS are to be created. type: object required: - nsProfileId @@ -6068,6 +6573,7 @@ definitions: locationConstraints: description: > Defines the location constraints for the nested NS instance to be created based on the NS profile. + See note. $ref: "#/definitions/LocationConstraints" LcmOpOccNotificationVerbosityType: @@ -6080,4 +6586,95 @@ definitions: type: string enum: - FULL - - SHORT \ No newline at end of file + - SHORT + + TerminateVnfData: + description: > + This type represents the information to terminate a VNF that is part of an NS. + NOTE: If the VNF is still in service, requesting forceful termination can adversely impact network service. + type: object + required: + - vnfInstanceId + properties: + vnfInstanceId: + description: > + Identifies the VNF instance, part of the NS, to be terminated. + $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" + terminationType: + description: > + Indicates whether forceful or graceful termination is requested. + See note. + Permitted values: + - FORCEFUL + - GRACEFUL + type: string + enum: + - FORCEFUL + - GRACEFUL + gracefulTerminationTimeout: + description: > + The attribute is only applicable in case of graceful termination. + It defines the time to wait for the VNF to be taken out of service before + shutting down the VNF and releasing the resources. + The unit is seconds. + type: integer + additionalParams: + description: > + Additional parameters passed by the OSS/BSS as input to the termination process, specific to the VNF being terminated. + EXAMPLE: Input parameters to VNF-specific termination procedures. + $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs" + + TerminateNsData: + type: object + properties: + additionalParamsforNs: + description: > + Allows the OSS/BSS to provide additional parameter(s) to the termination process at the NS level. + $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs" + + VipCpInfo: + description: > + This type provides information related to virtual IP (VIP) CP. It shall comply with the provisions + defined in table 6.5.3.97 1. + NOTE: It is possible that there is no associated VnfcCp because the VIP CP is available + but not associated yet. + type: object + required: + - cpInstanceId + - cpdId + properties: + cpInstanceId: + description: > + Identifier of this VIP CP instance and of this VipCpInfo information element. + $ref: "#/definitions/IdentifierInVnf" + cpdId: + description: > + Identifier of the VIP Connection Point Descriptor, VipCpd, in the VNFD. + $ref: "../../definitions/SOL005_def.yaml#/definitions/IdentifierInVnfd" + vnfExtCpId: + description: > + When the VIP CP is exposed as external CP of the VNF, the identifier of this external VNF CP instance. + $ref: "#/definitions/IdentifierInVnf" + cpProtocolInfo: + description: > + Protocol information for this CP. There shall be one cpProtocolInfo for layer 3. There may be one cpProtocolInfo for layer 2. + type: array + items: + $ref: "#/definitions/CpProtocolInfo" + associatedVnfcCpIds: + description: > + Identifiers of the VnfcCps that share the virtual IP addresse allocated to the VIP CP instance. See note. + type: array + items: + $ref: "#/definitions/IdentifierInVnf" + vnfLinkPortId: + description: > + Identifier of the "VnfLinkPortInfo" structure in the "VnfVirtualLinkResourceInfo" or "ExtManagedVirtualLinkInfo" structure. + Shall be present if the CP is associated to a link port on an internal VL (including externally-managed internal VL). + $ref: "#/definitions/IdentifierInVnf" + metadata: + description: > + Allows the OSS/BSS to provide additional parameter(s) to the termination process at the NS level. + type: array + items: + $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs" \ No newline at end of file diff --git a/src/SOL005/NSLifecycleManagementNotification/NSLifecycleManagementNotification.yaml b/src/SOL005/NSLifecycleManagementNotification/NSLifecycleManagementNotification.yaml index eb6f38e6dea2e38a24a785bd285dc2345fe1f476..bc8a567fed9008ca388c399cde8ad804fc530dfb 100644 --- a/src/SOL005/NSLifecycleManagementNotification/NSLifecycleManagementNotification.yaml +++ b/src/SOL005/NSLifecycleManagementNotification/NSLifecycleManagementNotification.yaml @@ -1,24 +1,28 @@ openapi: 3.0.2 info: - title: SOL005 - NS Lifecycle Management Notification interface + title: SOL005 - NS Lifecycle Management Notification Interface description: | - SOL005 - NS Lifecycle Management Notification interface - IMPORTANT: Please note that this file might be not aligned to the current version of the ETSI Group Specification - it refers to. In case of discrepancies the published ETSI Group Specification takes precedence. - Please report bugs to https://forge.etsi.org/rep/nfv/SOL005/issues + SOL005 - NS Lifecycle Management Notification Interface + + IMPORTANT: Please note that this file might be not aligned to the current + version of the ETSI Group Specification it refers to. In case of + discrepancies the published ETSI Group Specification takes precedence. + + contact: + name: NFV-SOL WG license: name: ETSI Forge copyright notice url: https://forge.etsi.org/etsi-forge-copyright-notice.txt - version: 2.0.0-impl:etsi.org:ETSI_NFV_OpenAPI:1 + version: 2.1.0-impl:etsi.org:ETSI_NFV_OpenAPI:1 externalDocs: - description: ETSI GS NFV-SOL 005 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.03.01_60/gs_nfv-sol005v030301p.pdf + description: ETSI GS NFV-SOL 005 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.05.01_60/gs_nfv-sol005v030501p.pdf servers: - - url: http://127.0.0.1/callback/v1 - - url: https://127.0.0.1/callback/v1 + - url: http://127.0.0.1/callback/v2 + - url: https://127.0.0.1/callback/v2 paths: /URI_is_provided_by_the_client_when_creating_the_subscription-NsLcmOperationOccurrenceNotification: @@ -26,16 +30,15 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization get: - summary: Test the notification endpoint. description: | - The GET method allows the API producer to test the notification endpoint that is provided by the API consumer, - e.g. during subscription. This method shall follow the provisions specified in the Tables 6.4.18.3.2-1 and - 6.4.18.3.2-2 for URI query parameters, request and response data structures, and response codes. + The POST method delivers a notification from the API producer to an API consumer. The API consumer shall + have previously created an "Individual subscription" resource with a matching filter. + See clause 6.4.18.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept responses: "204": - $ref: '#/components/responses/NsLcmOperationOccurrenceNotification.Get' + $ref: '#/components/responses/NsLcmOperationOccurrenceNotification.Get.204' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -52,12 +55,9 @@ paths: $ref: ../responses/SOL005_resp.yaml#/components/responses/503 post: - summary: Notify about NS lifecycle change description: | - The POST method delivers a notification from the API producer to an API consumer. The API consumer shall have - previously created an "Individual subscription" resource with a matching filter. This method shall follow the - provisions specified in the Tables 6.4.18.3.1-1 and 6.4.18.3.1-2 for URI query parameters, request and response - data structures, and response codes. + The GET method allows the API producer to test the notification endpoint that is provided by the API consumer, + e.g. during subscription. See clause 6.4.18.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType @@ -65,7 +65,7 @@ paths: $ref: '#/components/requestBodies/NsLcmOperationOccurrenceNotificationRequest' responses: "204": - $ref: '#/components/responses/NsLcmOperationOccurrenceNotification.Post' + $ref: '#/components/responses/NsLcmOperationOccurrenceNotification.Post.204' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -86,16 +86,15 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization get: - summary: Test the notification endpoint. description: | - The GET method allows the API producer to test the notification endpoint that is provided by the API consumer, - e.g. during subscription. This method shall follow the provisions specified in the Tables 6.4.18.3.2-1 and - 6.4.18.3.2-2 for URI query parameters, request and response data structures, and response codes. + The POST method delivers a notification from the API producer to an API consumer. The API consumer shall + have previously created an "Individual subscription" resource with a matching filter. + See clause 6.4.18.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept responses: "204": - $ref: '#/components/responses/NsIdentifierCreationNotification.Get' + $ref: '#/components/responses/NsIdentifierCreationNotification.Get.204' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -112,13 +111,10 @@ paths: $ref: ../responses/SOL005_resp.yaml#/components/responses/503 post: - summary: Notify about NS lifecycle change description: | - The POST method delivers a notification from the API producer to an API consumer. - The API consumer shall have previously created an "Individual subscription" resource - with a matching filter. This method shall follow the provisions specified in the - Tables 6.4.18.3.1-1 and 6.4.18.3.1-2 for URI query parameters, request and response - data structures, and response codes. + The POST method delivers a notification from the API producer to an API consumer. The API consumer shall + have previously created an "Individual subscription" resource with a matching filter. + See clause 6.4.18.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType @@ -126,7 +122,7 @@ paths: $ref: '#/components/requestBodies/NsIdentifierCreationNotificationRequest' responses: "204": - $ref: '#/components/responses/NsIdentifierCreationNotification.Post' + $ref: '#/components/responses/NsIdentifierCreationNotification.Post.204' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -147,17 +143,15 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization get: - summary: Test the notification endpoint. description: | - Query NS Instances. - The GET method allows the API producer to test the notification endpoint that is provided by the API consumer, - e.g. during subscription. This method shall follow the provisions specified in the Tables 6.4.18.3.2-1 and - 6.4.18.3.2-2 for URI query parameters, request and response data structures, and response codes. + The POST method delivers a notification from the API producer to an API consumer. The API consumer shall + have previously created an "Individual subscription" resource with a matching filter. + See clause 6.4.18.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept responses: "204": - $ref: '#/components/responses/NsIdentifierDeletionNotification.Get' + $ref: '#/components/responses/NsIdentifierDeletionNotification.Get.204' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -174,13 +168,10 @@ paths: $ref: ../responses/SOL005_resp.yaml#/components/responses/503 post: - summary: Notify about NS lifecycle change description: | - The POST method delivers a notification from the API producer to an API consumer. - The API consumer shall have previously created an "Individual subscription" resource - with a matching filter. This method shall follow the provisions specified in the - Tables 6.4.18.3.1-1 and 6.4.18.3.1-2 for URI query parameters, request and response - data structures, and response codes. + The POST method delivers a notification from the API producer to an API consumer. The API consumer shall + have previously created an "Individual subscription" resource with a matching filter. + See clause 6.4.18.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType @@ -188,7 +179,63 @@ paths: $ref: '#/components/requestBodies/NsIdentifierDeletionNotificationRequest' responses: "204": - $ref: '#/components/responses/NsIdentifierDeletionNotification.Post' + $ref: '#/components/responses/NsIdentifierDeletionNotification.Post.204' + "400": + $ref: ../responses/SOL005_resp.yaml#/components/responses/400 + "401": + $ref: ../responses/SOL005_resp.yaml#/components/responses/401 + "403": + $ref: ../responses/SOL005_resp.yaml#/components/responses/403 + "405": + $ref: ../responses/SOL005_resp.yaml#/components/responses/405 + "406": + $ref: ../responses/SOL005_resp.yaml#/components/responses/406 + "500": + $ref: ../responses/SOL005_resp.yaml#/components/responses/500 + "503": + $ref: ../responses/SOL005_resp.yaml#/components/responses/503 + + /URI_is_provided_by_the_client_when_creating_the_subscription-NsLcmCapacityShortageNotification: + parameters: + - $ref: ../components/SOL005_params.yaml#/components/parameters/Version + - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization + get: + description: | + The GET method allows the API producer to test the notification endpoint that is provided by the API + consumer, e.g. during subscription. See clause 6.4.18.3.1. + parameters: + - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept + responses: + "204": + $ref: '#/components/responses/NsLcmCapacityShortageNotification.Get.204' + "400": + $ref: ../responses/SOL005_resp.yaml#/components/responses/400 + "401": + $ref: ../responses/SOL005_resp.yaml#/components/responses/401 + "403": + $ref: ../responses/SOL005_resp.yaml#/components/responses/403 + "405": + $ref: ../responses/SOL005_resp.yaml#/components/responses/405 + "406": + $ref: ../responses/SOL005_resp.yaml#/components/responses/406 + "500": + $ref: ../responses/SOL005_resp.yaml#/components/responses/500 + "503": + $ref: ../responses/SOL005_resp.yaml#/components/responses/503 + + post: + description: | + The POST method delivers a notification from the API producer to an API consumer. The API consumer shall + have previously created an "Individual subscription" resource with a matching filter. + See clause 6.4.18.3.1. + parameters: + - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept + - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType + requestBody: + $ref: '#/components/requestBodies/NsLcmCapacityShortageNotificationRequest' + responses: + "204": + $ref: '#/components/responses/NsLcmCapacityShortageNotification.Post.204' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -203,7 +250,6 @@ paths: $ref: ../responses/SOL005_resp.yaml#/components/responses/500 "503": $ref: ../responses/SOL005_resp.yaml#/components/responses/503 - components: requestBodies: NsLcmOperationOccurrenceNotificationRequest: @@ -232,9 +278,18 @@ components: schema: $ref: ./definitions/SOL005NSLifecycleManagementNotification_def.yaml#/definitions/NsIdentifierDeletionNotification required: true - + + NsLcmCapacityShortageNotificationRequest: + description: | + A notification about lifecycle capacity shortage triggered when there is a shortage condition. + content: + application/json: + schema: + $ref: ./definitions/SOL005NSLifecycleManagementNotification_def.yaml#/definitions/NsLcmCapacityShortageNotification + required: true + responses: - NsLcmOperationOccurrenceNotification.Get: + NsLcmOperationOccurrenceNotification.Get.204: description: | 204 No Content Shall be returned when the notification endpoint has been tested successfully. @@ -257,7 +312,7 @@ components: type: string content: {} - NsLcmOperationOccurrenceNotification.Post: + NsLcmOperationOccurrenceNotification.Post.204: description: | 204 No Content Shall be returned when the notification has been delivered successfully. @@ -279,7 +334,51 @@ components: type: string content: {} - NsIdentifierCreationNotification.Get: + NsIdentifierCreationNotification.Get.204: + description: | + 204 No Content + Shall be returned when the notification endpoint has been tested successfully. The response body shall be empty. + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + content: {} + + NsIdentifierCreationNotification.Post.204: + description: | + 204 No Content + Shall be returned when the notification has been delivered successfully. + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + content: {} + + NsIdentifierDeletionNotification.Get.204: description: | 204 No Content Shall be returned when the notification endpoint has been tested successfully. The response body shall be empty. @@ -301,7 +400,7 @@ components: type: string content: {} - NsIdentifierCreationNotification.Post: + NsIdentifierDeletionNotification.Post.204: description: | 204 No Content Shall be returned when the notification has been delivered successfully. @@ -323,7 +422,7 @@ components: type: string content: {} - NsIdentifierDeletionNotification.Get: + NsLcmCapacityShortageNotification.Get.204: description: | 204 No Content Shall be returned when the notification endpoint has been tested successfully. The response body shall be empty. @@ -345,7 +444,7 @@ components: type: string content: {} - NsIdentifierDeletionNotification.Post: + NsLcmCapacityShortageNotification.Post.204: description: | 204 No Content Shall be returned when the notification has been delivered successfully. diff --git a/src/SOL005/NSLifecycleManagementNotification/definitions/SOL005NSLifecycleManagementNotification_def.yaml b/src/SOL005/NSLifecycleManagementNotification/definitions/SOL005NSLifecycleManagementNotification_def.yaml index 90030db4d5ca4e523828489628a1007627bde3cc..c1fba969b66d9984aa9e8869d7da1c0e51821201 100644 --- a/src/SOL005/NSLifecycleManagementNotification/definitions/SOL005NSLifecycleManagementNotification_def.yaml +++ b/src/SOL005/NSLifecycleManagementNotification/definitions/SOL005NSLifecycleManagementNotification_def.yaml @@ -21,6 +21,13 @@ definitions: Identifier of this notification. If a notification is sent multiple times due to multiple subscriptions, the "id" attribute of all these notifications shall have the same value. + + NOTE: Shall be present if the "notificationStatus" is set to "RESULT", + the "verbosity" attribute is set to "FULL" and the operation has performed + any resource modification. Shall be absent otherwise. This attribute contains + information about the cumulative changes to virtualised resources that were + performed so far by the NS LCM operation occurrence and by any of the error + handling procedures for that operation occurrence. $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" nsInstanceId: description: > @@ -86,65 +93,41 @@ definitions: affectedVnf: description: > Information about the VNF instances that were affected - during the lifecycle operation. - Shall be present if the "notificationStatus" is set to "RESULT", the "verbosity" attribute is set to "FULL" - and the operation has performed any resource modification. Shall be absent otherwise. This attribute contains - information about the cumulative changes to virtualised resources that were performed so far by the NS LCM - operation occurrence and by any of the error handling procedures for that operation occurrence. + during the lifecycle operation. See note. type: array items: $ref: "../../NSLifecycleManagement/definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedVnf" affectedPnf: description: > Information about the PNF instances that were affected - during the lifecycle operation. - Shall be present if the "notificationStatus" is set to "RESULT", the "verbosity" attribute is set to "FULL" - and the operation has performed any resource modification. Shall be absent otherwise. This attribute contains - information about the cumulative changes to virtualised resources that were performed so far by the NS LCM - operation occurrence and by any of the error handling procedures for that operation occurrence. + during the lifecycle operation. See note. type: array items: $ref: "../../NSLifecycleManagement/definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedPnf" affectedVl: description: > Information about the VL instances that were affected - during the lifecycle operation. - Shall be present if the "notificationStatus" is set to "RESULT", the "verbosity" attribute is set to "FULL" - and the operation has performed any resource modification. Shall be absent otherwise. This attribute contains - information about the cumulative changes to virtualised resources that were performed so far by the NS LCM - operation occurrence and by any of the error handling procedures for that operation occurrence. + during the lifecycle operation. See note. type: array items: $ref: "../../NSLifecycleManagement/definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedVirtualLink" affectedVnffg: description: > Information about the VNFFG instances that were - affected during the lifecycle operation. - Shall be present if the "notificationStatus" is set to "RESULT", the "verbosity" attribute is set to "FULL" - and the operation has performed any resource modification. Shall be absent otherwise. This attribute contains - information about the cumulative changes to virtualised resources that were performed so far by the NS LCM - operation occurrence and by any of the error handling procedures for that operation occurrence. + affected during the lifecycle operation. See note. type: array items: $ref: "../../NSLifecycleManagement/definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedVnffg" affectedNs: description: > Information about the SAP instances that were affected - during the lifecycle operation. - Shall be present if the "notificationStatus" is set to "RESULT", the "verbosity" attribute is set to "FULL" - and the operation has performed any resource modification. Shall be absent otherwise. This attribute contains - information about the cumulative changes to virtualised resources that were performed so far by the NS LCM - operation occurrence and by any of the error handling procedures for that operation occurrence. + during the lifecycle operation.See note. type: array items: $ref: "../../NSLifecycleManagement/definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedNs" affectedSap: description: > - Information about the SAP instances that were affected during the lifecycle operation. - Shall be present if the "notificationStatus" is set to "RESULT", the "verbosity" attribute is set to "FULL" - and the operation has performed any resource modification. Shall be absent otherwise. This attribute contains - information about the cumulative changes to virtualised resources that were performed so far by the NS LCM - operation occurrence and by any of the error handling procedures for that operation occurrence. + Information about the SAP instances that were affected during the lifecycle operation. See note. type: array items: $ref: "../../NSLifecycleManagement/definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/AffectedSap" @@ -244,6 +227,211 @@ definitions: Links to resources related to this notification. $ref: "../../NSLifecycleManagement/definitions/SOL005NSLifecycleManagement_def.yaml#/definitions/LccnLinks" + NsLcmCapacityShortageNotification: + description: > + This type represents an NS LCM capacity shortage notification, which informs the receiver about resource shortage + conditions during the execution of NS LCM operations. The notifications are triggered by the NFVO when a capacity + shortage condition occurs during the execution of an NS LCM operation, which fails due to the resource shortage, + or which succeeds despite the resource shortage because the NFVO has reduced the resource consumption of other + NSs by requesting these NSs to be scaled in or terminated. + + The notification shall comply with the provisions defined in Table 6.5.2.19-1. The support of the notification + is mandatory. + + This notification shall be triggered by the NFVO when there is a capacity shortage condition during the execution + of an NS LCM operation which will cause the LCM operation to be not successfully completed, or which will trigger + the automatic executing of an LCM operation to reduce the resource consumption of one or more NS instances to + resolve a resource shortage situation. The shortage conditions include: + • Necessary resources could not be allocated during an LCM operation because of resource shortage which causes + the LCM operation to fail. + • An LCM operation on an NS instance with higher priority pre-empted an LCM operation on NS instance with lower + priority because of resource shortage. + • An LCM operation on an NS instance with higher priority pre-empted an existing NS instance. Resources were + de-allocated from the lower priority NS instance to allow the LCM operation on a higher priority NS instance. + • The resource capacity shortage situation has ended, and it can be expected that an LCM operation that had + failed could succeed now if retried. + + NOTE: ETSI GS NFV-IFA 013 [x] defines further shortage situations. + These are not supported by the present version of the present document. + + This notification shall also be triggered by the NFVO when a shortage condition has ended that has previously + led to NS LCM operation occurrences failing. The notification shall be sent to all API consumers (OSS/BSS) + that have subscribed to notifications related to capacity shortage and meeting the filter conditions of all + pre-empted (low priority) and all pre-empting (high priority NS instance(s)). See ETSI GS NFV-IFA 010 [2], + Annex D.2 for the use cases. + + The notification about the result of an unsuccessful LCM operation occurrence shall include appropriate + information about the resource shortage when the cause for failure is a resource shortage. + + The notification where a pre-emption occurred due to e.g. a higher priority LCM operation during resource + shortage shall include appropriate information about the pre-emption. + + NOTE: Not all operation occurrences that are in "FAILED_TEMP" have been pre-empted by a resource shortage. + When the operation occurrences were pre-empted, the NS instances affected by the resource shortage end + (“status“ = "LCM_SHORTAGE_END") which are pointed by "affectedNsId" in the list of "affectedOpOccs" structure + can have the operations retried again (which needs a request by the OSS/BSS). + + NOTE 1: The present version of the present document supports only the resource shortage status enumeration + values “LCM_RESOURCES_NOT_AVAILABLE” and “LCM_SHORTAGE_END” which represent a subset of the trigger conditions + defined in clause 8.3.5.2 of ETSI GS NFV-IFA 013 [x]. + type: object + required: + - id + - notificationType + - subscriptionId + - timestamp + - status + properties: + id: + description: > + Identifier of this notification. If a notification is sent multiple times due to multiple subscriptions, + the "id" attribute of all these notifications shall have the same value. + $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" + notificationType: + description: > + Discriminator for the different notification types. Shall be set to "NsLcmCapacityShortageNotification" + for this notification type. + type: string + enum: + - NsLcmCapacityShortageNotification + subscriptionId: + description: > + Identifier of the subscription that this notification relates to. + $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" + timestamp: + description: > + Date-time of the generation of the notification. + $ref: "../../definitions/SOL005_def.yaml#/definitions/DateTime" + preemptingNsLcmOpOccId: + description: > + Identifier of the LCM operation occurrence that has triggered a pre-emption. + Shall be absent when the instantiation of a lower priority NS instance has failed because all + resources are allocated to higher priority NS instance(s). In this case the current instantiate operation + is represented in “affectedCondition” with the value “PRE_EMPTED“. + $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" + highPrioNsInstanceId: + description: > + Identifier of the higher priority NS instance affected by the lifecycle operation represented by the + "preemptingNsLcmOpOccId" attribute. + Shall be present if "preemptingNsLcmOpOccId" is present and shall be absent otherwise. + $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" + status: + description: > + Indicates the situation of capacity shortage. + Permitted values: + - LCM_RESOURCES_NOT_AVAILABLE: the lifecycle operation identified by the nsLcmOpOccId attribute could not + be completed because necessary resources were not available. + - LCM_SHORTAGE_END: the shortage situation which has caused the lifecycle management operation identified + by the nsLcmOpOccId attribute to fail has ended. + type: string + enum: + - LCM_RESOURCES_NOT_AVAILABLE + - LCM_SHORTAGE_END + shortageType: + description: > + Indicates whether this notification reports about a resource shortage or NFV-MANO capacity or performance shortage. + Permitted values: + - RESOURCE_SHORTAGE: the notification reports a resource shortage. + + Shall be present when a resources shortage situation has been identified starts and the notification is + sent with “status“ = “LCM_RESOURCES_NOT_AVAILABLE“ and shall be absent otherwise. + type: string + enum: + - RESOURCE_SHORTAGE + affectedOpOccs: + description: > + List of NS LCM operation occurrence(s) that were affected by the resource shortage. + type: array + items: + type: object + required: + - affectedNsId + - affectedOpOccId + - affectedCondition + - _links + properties: + affectedNsId: + description: > + Identifier of the NS instance related to the operation occurrence that was affected by the shortage. + $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" + affectedOpOccId: + description: > + Identifier of the NS LCM operation occurrence that was affected by the shortage. + $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" + affectedCondition: + description: > + This flag indicates in what condition (pre-empted or triggered) the operation occurrence(s) were + affected by the resource shortage. + + Permitted values: + - PRE_EMPTED: the operation was pre-empted and the "operationState" = "FAILED_TEMP” of the NsLcmOpOcc + structure identified by "affectedOpOccId" attribute. + - TRIGGERED: the operation was triggered by NFVO and the “operationState” = "FAILED_TEMP” of the + NsLcmOpOcc structure identified by "affectedOpOccId" attribute. + + In case the notification indicates the end of a shortage condition (“status“ = "LCM_SHORTAGE_END"), + only entries with “affectedCondition“ = "PRE_EMPTED" shall be included. + See note. + type: string + enum: + - PRE_EMPTED + - TRIGGERED + _links: + description: > + Links related to NS resources affected by the shortage of this operation occurrence. + type: object + required: + - affectedLcmOpOcc + - affectedNs + properties: + affectedLcmOpOcc: + description: > + Link related to the NS lifecycle management operation occurrence. + $ref: "../../definitions/SOL005_def.yaml#/definitions/Link" + affectedNs: + description: > + Link related to the NS instance that was affected by the shortage. + $ref: "../../definitions/SOL005_def.yaml#/definitions/Link" + capacityInformation: + description: > + References to NFVI capacity information related to the shortage. + type: array + items: + type: object + required: + - vimId + - _link + properties: + vimId: + description: > + Identifier of the VIM where the capacity shortage occurs. + $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" + _link: + description: > + Link to the related "Individual VIM’s capacity information" resource. + $ref: "../../definitions/SOL005_def.yaml#/definitions/Link" + _links: + description: > + Links to resources related to this notification. + type: object + required: + - subscription + properties: + preemptingNsLcmOpOcc: + description: > + Link to the resource representing the pre-empting LCM operation occurrence identified by + preemptingNsLcmOpOccId. Shall be present if preemptingNsLcmOpOccId is present and shall be absent otherwise. + $ref: "../../definitions/SOL005_def.yaml#/definitions/Link" + highPrioNsInstance: + description: > + Link to the resource representing the high-priority NS instance identified by highPrioNsInstanceId. + Shall be present if highPrioNsInstanceId is present and shall be absent otherwise. + $ref: "../../definitions/SOL005_def.yaml#/definitions/Link" + subscription: + description: > + Link to the subscription that triggered this notification. + $ref: "../../definitions/SOL005_def.yaml#/definitions/Link" + NsChangeNotification: description: > This type represents an NS change notification, which informs the receiver of changes on the NS instance caused by the diff --git a/src/SOL005/NSPerformanceManagement/NSPerformanceManagement.yaml b/src/SOL005/NSPerformanceManagement/NSPerformanceManagement.yaml index 1b61242db629447e98e14488fb93bfb498abc7ef..aaf9527a004ada09c518efe7afd65a96a1180796 100644 --- a/src/SOL005/NSPerformanceManagement/NSPerformanceManagement.yaml +++ b/src/SOL005/NSPerformanceManagement/NSPerformanceManagement.yaml @@ -6,20 +6,21 @@ info: SOL005 - NS Performance Management Interface IMPORTANT: Please note that this file might be not aligned to the current - version of the ETSI Group Specification it refers to and has not been - approved by the ETSI NFV ISG. In case of discrepancies the published ETSI - Group Specification takes precedence. + version of the ETSI Group Specification it refers to. In case of + discrepancies the published ETSI Group Specification takes precedence. + Please report bugs to https://forge.etsi.org/rep/nfv/SOL005/issues + contact: name: NFV-SOL WG license: name: ETSI Forge copyright notice url: https://forge.etsi.org/etsi-forge-copyright-notice.txt - version: 2.1.0-impl:etsi.org:ETSI_NFV_OpenAPI:1 + version: 2.2.0-impl:etsi.org:ETSI_NFV_OpenAPI:1 externalDocs: - description: ETSI GS NFV-SOL 005 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.03.01_60/gs_nfv-sol005v030301p.pdf + description: ETSI GS NFV-SOL 005 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.05.01_60/gs_nfv-sol005v030501p.pdf servers: - url: http://127.0.0.1/nspm/v2 @@ -44,20 +45,13 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType post: - summary: Create a PM job. description: | - The POST method creates a PM job. - This method shall follow the provisions specified in the - Tables 7.4.2.3.1-1 and 7.4.2.3.1-2 for URI query parameters, - request and response data structures, and response codes. - As the result of successfully executing this method, a new - "Individual PM job" resource exist as defined in - clause 7.4.3 shall have been created. + The POST method creates a PM job. See clause 7.4.2.3.1. requestBody: $ref: '#/components/requestBodies/CreatePmJobRequest' responses: 201: - $ref: '#/components/responses/PMJobs.Post.201' + $ref: '#/components/responses/PmJobs.Post.201' 400: $ref: "../responses/SOL005_resp.yaml#/components/responses/400" 401: @@ -71,16 +65,15 @@ paths: 406: $ref: "../responses/SOL005_resp.yaml#/components/responses/406" 422: - $ref: "../responses/SOL005_resp.yaml#/components/responses/422" + $ref: '#/components/responses/PmJobs.Post.422' 500: $ref: "../responses/SOL005_resp.yaml#/components/responses/500" 503: $ref: "../responses/SOL005_resp.yaml#/components/responses/503" get: - summary: Query PM jobs. description: | - The API consumer can use this method to retrieve information about PM jobs. + The API consumer can use this method to retrieve information about PM jobs. See clause 7.4.2.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/filter - $ref: ../components/SOL005_params.yaml#/components/parameters/all_fields @@ -90,7 +83,7 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/nextpage_opaque_marker responses: 200: - $ref: '#/components/responses/PMJobs.Get.200' + $ref: '#/components/responses/PmJobs.Get.200' 400: $ref: "../responses/SOL005_resp.yaml#/components/responses/400" 401: @@ -119,14 +112,13 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version get: - summary: Read a single PM job. description: | - The API consumer can use this method for reading an individual PM job. + The API consumer can use this method for reading an individual PM job. See clause 7.4.3.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept responses: 200: - $ref: '#/components/responses/IndividualPMJob.Get.200' + $ref: '#/components/responses/IndividualPmJob.Get.200' 400: $ref: "../responses/SOL005_resp.yaml#/components/responses/400" 401: @@ -145,19 +137,15 @@ paths: $ref: "../responses/SOL005_resp.yaml#/components/responses/503" patch: - summary: Modify a PM job. description: | - This method allows to modify an "individual PM job" resource. - This method shall follow the provisions specified in the - Tables 7.4.3.3.4-1 and 7.4.3.3.4-2 for URI query parameters, - request and response data structures, and response codes. + This method allows to modify an "individual PM job" resource. See clause 7.4.3.3.4. parameters: - $ref: '#/components/parameters/ContentTypeMergePatchJSON' requestBody: $ref: '#/components/requestBodies/PmJobModifications' responses: 200: - $ref: '#/components/responses/IndividualPMJob.Patch.200' + $ref: '#/components/responses/IndividualPmJob.Patch.200' 400: $ref: "../responses/SOL005_resp.yaml#/components/responses/400" 401: @@ -171,26 +159,20 @@ paths: 406: $ref: "../responses/SOL005_resp.yaml#/components/responses/406" 412: - $ref: "../responses/SOL005_resp.yaml#/components/responses/412" + $ref: '#/components/responses/IndividualPmJob.Patch.412' 422: - $ref: "../responses/SOL005_resp.yaml#/components/responses/422" + $ref: '#/components/responses/IndividualPmJob.Patch.422' 500: $ref: "../responses/SOL005_resp.yaml#/components/responses/500" 503: $ref: "../responses/SOL005_resp.yaml#/components/responses/503" delete: - summary: Delete a PM job. description: | - This method terminates an individual PM job. - This method shall follow the provisions specified in the Tables 7.4.3.3.5-1 - and 7.4.3.3.5-2 for URI query parameters, request and response data structures, - and response codes. - As the result of successfully executing this method, the "Individual PM job" - resource shall not exist any longer. + This method terminates an individual PM job. See clause 7.4.3.3.5. responses: 204: - $ref: '#/components/responses/IndividualPMJob.Delete.204' + $ref: '#/components/responses/IndividualPmJob.Delete.204' 400: $ref: "../responses/SOL005_resp.yaml#/components/responses/400" 401: @@ -220,10 +202,9 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version get: - summary: Read an individual performance report. description: | The API consumer can use this method for reading an individual performance - report. + report. See clause 7.4.4.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept responses: @@ -257,18 +238,9 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept post: - summary: Create a threshold. description: | The POST method can be used by the API consumer to create - a threshold. - - This method shall follow the provisions specified in the - table 7.4.5.3.1-2 for URI query parameters, - request and response data structures, and response codes. - - As the result of successfully executing this method, a new - "Individual threshold" resource as defined - in clause 7.4.6 shall have been created. + a threshold. See clause 7.4.5.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType requestBody: @@ -289,16 +261,15 @@ paths: 406: $ref: "../responses/SOL005_resp.yaml#/components/responses/406" 422: - $ref: "../responses/SOL005_resp.yaml#/components/responses/422" + $ref: '#/components/responses/Thresholds.Post.422' 500: $ref: "../responses/SOL005_resp.yaml#/components/responses/500" 503: $ref: "../responses/SOL005_resp.yaml#/components/responses/503" get: - summary: Query thresholds. description: | - The API consumer can use this method to query information about thresholds. + The API consumer can use this method to query information about thresholds. See clause 7.4.5.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/filter - $ref: ../components/SOL005_params.yaml#/components/parameters/nextpage_opaque_marker @@ -333,13 +304,9 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version get: - summary: Query a single threshold. description: | The API consumer can use this method for reading an individual - threshold. - This method shall follow the provisions specified in the - Tables 7.4.6.3.2-1 and 7.4.6.3.2-2 for URI query parameters, - request and response data structures, and response codes. + threshold. See clause 7.4.6.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept responses: @@ -363,12 +330,9 @@ paths: $ref: "../responses/SOL005_resp.yaml#/components/responses/503" patch: - summary: Modify a Threshold + description: | - This method allows to modify an "Individual threshold" resource. - This method shall follow the provisions specified in the Tables - 7.4.6.3.4-1 and 7.4.6.3.4-2 for URI query parameters, request - and response data structures, and response codes. + This method allows to modify an "Individual threshold" resource. See clause 7.4.6.3.4. parameters: - $ref: '#/components/parameters/ContentTypeMergePatchJSON' requestBody: @@ -389,21 +353,17 @@ paths: 406: $ref: "../responses/SOL005_resp.yaml#/components/responses/406" 412: - $ref: "../responses/SOL005_resp.yaml#/components/responses/412" + $ref: '#/components/responses/IndividualThreshold.Patch.412' 422: - $ref: "../responses/SOL005_resp.yaml#/components/responses/422" + $ref: '#/components/responses/IndividualThreshold.Patch.422' 500: $ref: "../responses/SOL005_resp.yaml#/components/responses/500" 503: $ref: "../responses/SOL005_resp.yaml#/components/responses/503" delete: - summary: Delete a Threshold. description: | - This method allows to delete a threshold. - - As the result of successfully executing this method, the - "Individual threshold" resource shall not exist any longer. + This method allows to delete a threshold. See clause 7.4.6.3.5. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept responses: @@ -878,7 +838,7 @@ components: responses: - PMJobs.Post.201: + PmJobs.Post.201: description: | 201 CREATED @@ -916,7 +876,48 @@ components: schema: $ref: "definitions/SOL005NSPerformanceManagement_def.yaml#/definitions/PmJob" - PMJobs.Get.200: + PmJobs.Post.422: + description: | + 422 Unprocessable Entity + + content type of the payload body is supported and the payload body of a request contains syntactically correct + data but the data cannot be processed. + The general cause for this error and its handling is specified in clause 6.4 of ETSI GS NFV-SOL 013 [16], + including rules for the presence of the response body. + Specifically in case of this resource, the response code 422 shall also be returned if the NFVO has tested + the Notification endpoint as described in clause 7.4.9.3.2 and the test has failed. + In this case, the "detail" attribute in the "ProblemDetails" structure shall convey more information about + the error + headers: + Content-Type: + description: | + The MIME type of the body of the response.This header + field shall be present if the response has a non-empty message body. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + + PmJobs.Get.200: description: | 200 OK @@ -970,7 +971,7 @@ components: items: $ref: "definitions/SOL005NSPerformanceManagement_def.yaml#/definitions/PmJob" - IndividualPMJob.Get.200: + IndividualPmJob.Get.200: description: | 200 OK @@ -1007,7 +1008,7 @@ components: schema: $ref: "definitions/SOL005NSPerformanceManagement_def.yaml#/definitions/PmJob" - IndividualPMJob.Patch.200: + IndividualPmJob.Patch.200: description: | 200 OK @@ -1034,7 +1035,65 @@ components: schema: $ref: "definitions/SOL005NSPerformanceManagement_def.yaml#/definitions/PmJobModifications" - IndividualPMJob.Delete.204: + IndividualPmJob.Patch.412: + description: | + 412 Precondition Failed + + A precondition given in an HTTP request header is not fulfilled. + Typically, this is due to an ETag mismatch, indicating that the resource was modified by another entity. + The response body should contain a ProblemDetails structure, in which the "detail" attribute should convey + more information about the error. + headers: + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + + IndividualPmJob.Patch.422: + description: | + 422 Unprocessable entity + + Shall be returned upon the following error: The content type of the payload body is supported and the payload + body of a request contains syntactically correct data but the data cannot be processed. + The general cause for this error and its handling is specified in clause 6.4 of ETSI GS NFV-SOL 013 [16], + including rules for the presence of the response body. + Specifically in case of this resource, the response code 422 shall also be returned if the NFVO has tested + the Notification endpoint as described in clause 7.4.9.3.2 and the test has failed. + In this case, the "detail" attribute in the "ProblemDetails" structure shall convey more information about + the error. + headers: + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + + IndividualPmJob.Delete.204: description: | 204 NO CONTENT @@ -1133,6 +1192,46 @@ components: schema: $ref: "definitions/SOL005NSPerformanceManagement_def.yaml#/definitions/Threshold" + Thresholds.Post.422: + description: | + 422 Unprocessable entity + + Shall be returned upon the following error: The content type of the payload body is supported and the payload + body of a request contains syntactically correct data but the data cannot be processed. + The general cause for this error and its handling is specified in clause 6.4 of ETSI GS NFV-SOL 013 [16], + including rules for the presence of the response body. + Specifically in case of this resource, the response code 422 shall also be returned if the NFVO has tested + the Notification endpoint as described in clause 7.4.9.3.2 and the test has failed. + In this case, the "detail" attribute in the "ProblemDetails" structure shall convey more information about the error. + headers: + Content-Type: + description: | + The MIME type of the body of the response.This header + field shall be present if the response has a non-empty message body. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + Thresholds.Get.200: description: | 200 OK @@ -1249,6 +1348,64 @@ components: schema: $ref: "definitions/SOL005NSPerformanceManagement_def.yaml#/definitions/ThresholdModifications" + IndividualThreshold.Patch.412: + description: | + 412 Precondition Failed + + Shall be returned upon the following error: A precondition given in an HTTP request header is not fulfilled. + Typically, this is due to an ETag mismatch, indicating that the resource was modified by another entity. + The response body should contain a ProblemDetails structure, in which the "detail" attribute should + convey more information about the error. + headers: + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + + IndividualThreshold.Patch.422: + description: | + 422 Unprocessable Entity + + Shall be returned upon the following error: The content type of the payload body is supported and the payload + body of a request contains syntactically correct data but the data cannot be processed. + The general cause for this error and its handling is specified in clause 6.4 of ETSI GS NFV-SOL 013 [16], + including rules for the presence of the response body. + Specifically in case of this resource, the response code 422 shall also be returned if the NFVO has tested + the Notification endpoint as described in clause 7.4.9.3.2 and the test has failed. + In this case, the "detail" attribute in the "ProblemDetails" structure shall convey more information about + the error. + headers: + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + IndividualThreshold.Delete.204: description: | 204 NO CONTENT diff --git a/src/SOL005/NSPerformanceManagement/definitions/SOL005NSPerformanceManagement_def.yaml b/src/SOL005/NSPerformanceManagement/definitions/SOL005NSPerformanceManagement_def.yaml index 457626d7debb0307e82067063f7b28117336fd3f..941446ad7c16760034142273a45d513114cc7869 100644 --- a/src/SOL005/NSPerformanceManagement/definitions/SOL005NSPerformanceManagement_def.yaml +++ b/src/SOL005/NSPerformanceManagement/definitions/SOL005NSPerformanceManagement_def.yaml @@ -332,6 +332,14 @@ definitions: to the OSS/BSS as a result of collecting performance information as part of a PM job. The type shall comply with the provisions defined in Table 7.5.2.10-1. + NOTE: The sub-object allows to structure the measured object but is not to be confused with sub-counters which allow to structure the measurement value. + + EXAMPLE: Measured object: VnfInstanceXYZ + Sub-object: VnfcInstance1 + Measurement: vCPU_utilization + Sub-counters: vCPU utilization of each of the vCPUs of VnfcInstance1 + (vCPU_utilization.vCPU1, vCPU_utilization.vCPU2, etc.). + type: object required: - entries @@ -367,18 +375,7 @@ definitions: Identifier of the sub-object instance of the measured object instance for which the performance metric is reported. Shall be present if this is required in clause 6.2 of - ETSI GS NFV-IFA 027 for the related measured object type. - - The sub-object allows to structure the measured object but is - not to be confused with sub-counters which allow to structure - the measurement value. - - EXAMPLE: - Measured object: VnfInstanceXYZ - Sub-object: VnfcInstance1 - Measurement: vCPU_utilization - Sub-counters: vCPU utilization of each of the vCPUs of VnfcInstance1 - (vCPU utilization.vCPU1, vCPU_utilization.vCPU2, etc.). + ETSI GS NFV-IFA 027 for the related measured object type. See note. type: array items: $ref: "../../definitions/SOL005_def.yaml#/definitions/IdentifierInNs" @@ -419,6 +416,7 @@ definitions: description: > This type represents modifications to a PM job. It shall comply with the provisions defined in Table 7.5.2.12-1. + NOTE: At least one of the attributes defined in this type shall be present in request bodies. type: object anyOf: - required: @@ -429,7 +427,7 @@ definitions: callbackUri: description: > New value of the "callbackUri" attribute. The value "null" is not permitted. - At least one of the attributes defined in this type shall be present in request bodies. + See note. $ref: "../../definitions/SOL005_def.yaml#/definitions/Uri" authentication: description: > @@ -437,13 +435,14 @@ definitions: If present in a request body, these modifications shall be applied according to the rules of JSON Merge Patch (see IETF RFC 7396). This attribute shall not be present in response bodies. - At least one of the attributes defined in this type shall be present in request bodies. + See note. $ref: "../../definitions/SOL005_def.yaml#/definitions/SubscriptionAuthentication" ThresholdModifications: description: > This type represents modifications to a threshold. It shall comply with the provisions defined in Table 7.5.2.11-1. + NOTE: At least one of the attributes defined in this type shall be present in request bodies. type: object anyOf: - required: @@ -454,7 +453,7 @@ definitions: callbackUri: description: > New value of the "callbackUri" attribute. The value "null" is not permitted. - At least one of the attributes defined in this type shall be present in request bodies. + See note. $ref: "../../definitions/SOL005_def.yaml#/definitions/Uri" authentication: description: > @@ -463,6 +462,7 @@ definitions: the rules of JSON Merge Patch (see IETF RFC 7396). This attribute shall not be present in response bodies. At least one of the attributes defined in this type shall be present in request bodies. + See note. $ref: "../../definitions/SOL005_def.yaml#/definitions/SubscriptionAuthentication" # PmNotificationsFilter: @@ -501,6 +501,16 @@ definitions: description: > This type represents collection criteria for PM jobs. It shall comply with the provisions defined in Table 7.5.3.3-1. + + NOTE 1: At the end of each reportingPeriod, the API producer + inform the API consumer about availability of the performance data + collected for each completed collection period during this reportingPeriod. + The reportingPeriod should be equal to or a multiple of the collectionPeriod. + In the latter case, the performance data for the collection periods within one. + + NOTE 2: In particular when choosing short collection and reporting periods, the number + of PM jobs that can be supported depends on the capability of the producing entity. + reporting period are reported together. type: object required: - collectionPeriod @@ -532,16 +542,7 @@ definitions: description: > Specifies the periodicity at which the API producer will collect performance information. The unit - shall be seconds. - At the end of each reportingPeriod, the API producer will inform - the API consumer about availability of the performance data collected - for each completed collection period during this reportingPeriod. - The reportingPeriod should be equal to or a multiple of the collectionPeriod. - In the latter case, the performance data for the collection periods - within one reporting period are reported together. - In particular when choosing short collection and reporting periods, - the number of PM jobs that can be supported depends on the capability - of the producing entity. + shall be seconds. See note 1 and note 2. type: integer minimum: 0 default: 0 @@ -550,15 +551,7 @@ definitions: Specifies the periodicity at which the API producer will report to the API consumer. about performance information. The unit shall be seconds. - At the end of each reportingPeriod, the API producer will inform the - API consumer about availability of the performance data collected for - each completed collection period during this reportingPeriod. - The reportingPeriod should be equal to or a multiple of the collectionPeriod. - In the latter case, the performance data for the collection periods - within one reporting period are reported together. - In particular when choosing short collection and reporting periods, - the number of PM jobs that can be supported depends on the capability - of the producing entity. + See note 1 and note 2. type: integer minimum: 0 default: 0 @@ -573,6 +566,12 @@ definitions: ThresholdCriteria: description: > This type represents criteria that define a threshold. + NOTE 1: In the present document, simple thresholds are defined. + The definition of additional threshold types is left for future specification. + NOTE 2: The hysteresis is defined to prevent storms of threshold + crossing notifications. When processing a request to create a threshold, + implementations should enforce a suitable minimum value for this attribute + (e.g. override the value or reject the request). type: object required: - performanceMetric @@ -590,9 +589,7 @@ definitions: are present in the data structure. Permitted values: * SIMPLE: Single-valued static threshold - In the present document, simple thresholds are defined. The - definition of additional threshold types is left for future - specification. + See note 1. type: string enum: - SIMPLE @@ -619,9 +616,5 @@ definitions: "thresholdValue" + "hysteresis". A notification with crossing direction "DOWN" will be generated if the measured value reaches or undercuts "thresholdValue" - "hysteresis". - The hysteresis is defined to prevent storms of threshold - crossing notifications. When processing a request to create a - threshold, implementations should enforce a suitable minimum - value for this attribute (e.g. override the value or reject the - request). + See note 2. type: integer \ No newline at end of file diff --git a/src/SOL005/NSPerformanceManagementNotification/NSPerformanceManagementNotification.yaml b/src/SOL005/NSPerformanceManagementNotification/NSPerformanceManagementNotification.yaml index 1fb031efbb9d4644a5c71a7ca35702e89a416017..a497b0616dfe8eadac418ca9c2a2a419903c9c1f 100644 --- a/src/SOL005/NSPerformanceManagementNotification/NSPerformanceManagementNotification.yaml +++ b/src/SOL005/NSPerformanceManagementNotification/NSPerformanceManagementNotification.yaml @@ -1,24 +1,26 @@ openapi: 3.0.2 info: - title: SOL005 - NS Performance Management Notification interface + title: SOL005 - NS Performance Management Notification Interface description: | - SOL005 - NS Performance Management Notification interface + SOL005 - NS Performance Management Notification Interface IMPORTANT: Please note that this file might be not aligned to the current version of the ETSI Group Specification it refers to. In case of discrepancies the published ETSI Group Specification takes precedence. + Please report bugs to https://forge.etsi.org/rep/nfv/SOL005/issues + contact: name: NFV-SOL WG license: name: ETSI Forge copyright notice url: https://forge.etsi.org/etsi-forge-copyright-notice.txt - version: 2.0.0-impl:etsi.org:ETSI_NFV_OpenAPI:1 + version: 2.2.0-impl:etsi.org:ETSI_NFV_OpenAPI:1 externalDocs: - description: ETSI GS NFV-SOL 005 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.03.01_60/gs_nfv-sol005v030301p.pdf + description: ETSI GS NFV-SOL 005 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.05.01_60/gs_nfv-sol005v030501p.pdf servers: - url: http://127.0.0.1/callback/v2 @@ -28,21 +30,17 @@ paths: ################################################################################## # Notification endpoint PerformanceInformationAvailableNotification # ################################################################################## - /URI_is_provided_by_the_client_when_creating_the_subscription_PerformanceInformationAvailableNotificatio: + /URI_is_provided_by_the_client_when_creating_the_subscription-PerformanceInformationAvailableNotification: parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept post: - summary: Notify about PM related events description: | - The POST method delivers a notification regarding a performance management event - from the API producer to an API consumer. The API consumer shall have previously - created an "Individual PM job resource" or "Individual threshold resource". - This method shall follow the provisions specified in the - Tables 7.4.9.3.1-1 and 7.4.9.3.1-2 for URI query parameters, request and response - data strctures, and response codes. + The POST method delivers a notification regarding a performance management event from the API producer to an + API consumer. The API consumer shall have previously created an "Individual PM job resource" or + "Individual threshold resource". See clause 7.4.9.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType requestBody: @@ -68,14 +66,9 @@ paths: $ref: "../responses/SOL005_resp.yaml#/components/responses/503" get: - summary: Test the notification endpoint description: | - The GET method allows the API producer to test the notification - endpoint that is provided by the API consumer, e.g. during - creation of the PM job or threshold resource. - This method shall follow the provisions specified in the - Tables 7.4.9.3.2-1 and 7.4.9.3.2-2 for URI query parameters, - request and response data structures, and response codes. + The GET method allows the API producer to test the notification endpoint that is provided by the API + consumer, e.g. during creation of the PM job or threshold resource. See clause 7.4.9.3.2. responses: 204: $ref: '#/components/responses/PerformanceInformationAvailableNotification.Get.204' @@ -99,21 +92,17 @@ paths: ################################################################################## # Notification endpoint ThresholdCrossedNotification # ################################################################################## - /URI_is_provided_by_the_client_when_creating_the_subscription_ThresholdCrossedNotification: + /URI_is_provided_by_the_client_when_creating_the_subscription-ThresholdCrossedNotification: parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept post: - summary: Notify about PM related events description: | - The POST method delivers a notification regarding a performance management event - from the API producer to an API consumer. The API consumer shall have previously - created an "Individual PM job resource" or "Individual threshold resource". - This method shall follow the provisions specified in the - Tables 7.4.9.3.1-1 and 7.4.9.3.1-2 for URI query parameters, request and response - data strctures, and response codes. + The POST method delivers a notification regarding a performance management event from the API producer to an + API consumer. The API consumer shall have previously created an "Individual PM job resource" or + "Individual threshold resource". See clause 7.4.9.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType requestBody: @@ -139,14 +128,9 @@ paths: $ref: "../responses/SOL005_resp.yaml#/components/responses/503" get: - summary: Test the notification endpoint description: | - The GET method allows the API producer to test the notification - endpoint that is provided by the API consumer, e.g. during - creation of the PM job or threshold resource. - This method shall follow the provisions specified in the - Tables 7.4.9.3.2-1 and 7.4.9.3.2-2 for URI query parameters, - request and response data structures, and response codes. + The GET method allows the API producer to test the notification endpoint that is provided by the API + consumer, e.g. during creation of the PM job or threshold resource. See clause 7.4.9.3.2. responses: 204: $ref: '#/components/responses/ThresholdCrossedNotification.Get.204' @@ -278,4 +262,4 @@ components: style: simple explode: false schema: - type: string \ No newline at end of file + type: string diff --git a/src/SOL005/NSPerformanceManagementNotification/definitions/SOL005NSPerformanceManagementNotification_def.yaml b/src/SOL005/NSPerformanceManagementNotification/definitions/SOL005NSPerformanceManagementNotification_def.yaml index bbd7dd6021ee0f7df56b883f392530eed47a6a27..387f88b553a5c70e2a3c9485d880289aebea143b 100644 --- a/src/SOL005/NSPerformanceManagementNotification/definitions/SOL005NSPerformanceManagementNotification_def.yaml +++ b/src/SOL005/NSPerformanceManagementNotification/definitions/SOL005NSPerformanceManagementNotification_def.yaml @@ -96,9 +96,8 @@ definitions: ThresholdCrossedNotification: description: > This type represents a notification that is sent when a threshold has been crossed. - NOTE: The timing of sending this notification is determined by the capability of - the producing entity to evaluate the threshold crossing condition. - The notification shall be triggered by the NFVO when a threshold has been crossed. + NOTE: The sub-object allows to structure the measured object but is not to be confused + with sub-counters which allow to structure the measurement. type: object required: - id @@ -117,7 +116,7 @@ definitions: Identifier of this notification. If a notification is sent multiple times due to multiple subscriptions, the "id" attribute of all these - notifications shall have the same value.. + notifications shall have the same value. $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" notificationType: description: > @@ -153,9 +152,7 @@ definitions: the measurement applies. Shall be present if this is required in clause 6.2 of ETSI GS NFV IFA 027 for the related measured object type. - The sub-object allows to structure the measured object but is - not to be confused with sub-counters which allow to structure - the measurement. + See note. $ref: "../../definitions/SOL005_def.yaml#/definitions/IdentifierInNs" performanceMetric: description: > diff --git a/src/SOL005/VNFPackageManagement/VNFPackageManagement.yaml b/src/SOL005/VNFPackageManagement/VNFPackageManagement.yaml index 4e3b4788218d6d4c36e61d7ff904e7d30ac6409c..3a69c7ac82d947a150b85e6872cb4b1a14be5ccd 100644 --- a/src/SOL005/VNFPackageManagement/VNFPackageManagement.yaml +++ b/src/SOL005/VNFPackageManagement/VNFPackageManagement.yaml @@ -4,19 +4,23 @@ info: title: SOL005 - VNF Package Management Interface description: | SOL005 - VNF Package Management Interface - IMPORTANT: Please note that this file might be not aligned to the current version of the ETSI Group Specification it - refers to and has not been approved by the ETSI NFV ISG. In case of discrepancies the published ETSI Group Specification - takes precedence. Please report bugs to https://forge.etsi.org/rep/nfv/SOL005/issues + + IMPORTANT: Please note that this file might be not aligned to the current + version of the ETSI Group Specification it refers to. In case of + discrepancies the published ETSI Group Specification takes precedence. + + Please report bugs to https://forge.etsi.org/rep/nfv/SOL005/issues + contact: name: NFV-SOL WG license: name: ETSI Forge copyright notice url: https://forge.etsi.org/etsi-forge-copyright-notice.txt - version: 2.1.0-impl:etsi.org:ETSI_NFV_OpenAPI:1 + version: 2.2.0-impl:etsi.org:ETSI_NFV_OpenAPI:1 externalDocs: - description: ETSI GS NFV-SOL 005 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.03.01_60/gs_nfv-sol005v030301p.pdf + description: ETSI GS NFV-SOL 005 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.05.01_60/gs_nfv-sol005v030501p.pdf servers: - url: http://127.0.0.1/vnfpkgm/v2 @@ -31,11 +35,8 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization get: - summary: Query VNF packages information. description: | - The GET method queries the information of the VNF packages matching the filter. This method shall follow the - provisions specified in the Tables 9.4.2.3.2-1 and 9.4.2.3.2-2 for URI query parameters, request and response - data structures, and response codes. + The GET method queries the information of the VNF packages matching the filter. See clause 9.4.2.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/filter - $ref: ../components/SOL005_params.yaml#/components/parameters/all_fields @@ -46,7 +47,7 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept responses: "200": - $ref: '#/components/responses/VnfPackages.Get' + $ref: '#/components/responses/VnfPackages.Get.200' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -67,12 +68,8 @@ paths: $ref: ../responses/SOL005_resp.yaml#/components/responses/504 post: - summary: Create a new individual VNF package resource. description: | - The POST method creates a new individual VNF package resource. - Upon successful creation of the "Individual VNF package" resource, the NFVO shall set the "onboardingState" - attribute in the "VnPkgInfo" structure to "CREATED", the "operationalState" attribute to "DISABLED", and the - "usageState" attribute to "NOT_IN_USE". + The POST method creates a new individual VNF package resource. See clause 9.4.2.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept @@ -80,7 +77,7 @@ paths: $ref: '#/components/requestBodies/VnfPackageCreationRequest' responses: "201": - $ref: '#/components/responses/VnfPackages.Post' + $ref: '#/components/responses/VnfPackages.Post.201' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -110,14 +107,13 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization get: - summary: Read information about an individual VNF package. description: | - The GET method reads the information of a VNF package. + The GET method reads the information of an individual VNF package. See clause 9.4.3.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept responses: "200": - $ref: '#/components/responses/IndividualVnfPackage.Get' + $ref: '#/components/responses/IndividualVnfPackage.Get.200' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -138,12 +134,11 @@ paths: $ref: ../responses/SOL005_resp.yaml#/components/responses/504 delete: - summary: Delete an individual VNF package. description: | - The DELETE method deletes an individual VNF Package resource. + The DELETE method deletes an individual VNF Package resource. See clause 9.4.3.3.5. responses: "204": - $ref: '#/components/responses/IndividualVnfPackage.Delete' + $ref: '#/components/responses/IndividualVnfPackage.Delete.204' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -157,7 +152,7 @@ paths: "406": $ref: ../responses/SOL005_resp.yaml#/components/responses/406 "409": - $ref: ../responses/SOL005_resp.yaml#/components/responses/409 + $ref: '#/components/responses/IndividualVnfPackage.Delete.409' "500": $ref: ../responses/SOL005_resp.yaml#/components/responses/500 "503": @@ -166,18 +161,15 @@ paths: $ref: ../responses/SOL005_resp.yaml#/components/responses/504 patch: - summary: Update information about an individual VNF package. description: | - The PATCH method updates the information of a VNF package. - This method shall follow the provisions specified in the Tables 9.4.3.3.4-1 and 9.4.3.3.4-2 for URI query - parameters, request and response data structures, and response codes. + The PATCH method updates the information of a VNF package. See clause 9.4.3.3.4. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType requestBody: $ref: '#/components/requestBodies/VnfPackageModificationRequest' responses: "200": - $ref: '#/components/responses/IndividualVnfPackage.Patch' + $ref: '#/components/responses/IndividualVnfPackage.Patch.200' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -191,7 +183,7 @@ paths: "406": $ref: ../responses/SOL005_resp.yaml#/components/responses/406 "409": - $ref: ../responses/SOL005_resp.yaml#/components/responses/409 + $ref: '#/components/responses/IndividualVnfPackage.Patch.409' "500": $ref: ../responses/SOL005_resp.yaml#/components/responses/500 "503": @@ -205,28 +197,14 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization get: - summary: Read VNFD of an on-boarded VNF package. - description: | - The GET method reads the content of the VNFD within a VNF package. - The default format of the ZIP archive shall be the one specified in ETSI GS NFV-SOL 004 where only the files - representing the VNFD and information necessary to navigate the ZIP file and to identify the file that is the - entry point for parsing the VNFD and (if requested) further security information are included. This means that - the structure of the ZIP archive shall correspond to the directory structure used in the VNF package and that - the archive shall contain the following files from the package: • TOSCA.meta (if available in the package). - The main TOSCA definitions YAML file (either as referenced from TOSCA.meta or available as a file with the extension - ".yml" or ".yaml" from the root of the archive). Every component of the VNFD referenced (recursively) from the main - TOSCA definitions YAML file. • The related security information, if the "include_signatures" URI parameter is provided, - as follows: - - the manifest file; - - the singleton certificate file in the root of the VNF package (if available in the package); - - the signing certificates of the individual files included in the ZIP archive (if available in the package); - - the signatures of the individual files (if available in the package). + description: | + The GET method reads the content of the VNFD within a VNF package. See clause 9.4.4.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/include_signatures responses: "200": - $ref: '#/components/responses/IndividualVnfPackageVnfd.Get' + $ref: '#/components/responses/IndividualVnfPackageVnfd.Get.200' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -240,7 +218,7 @@ paths: "406": $ref: ../responses/SOL005_resp.yaml#/components/responses/406 "409": - $ref: ../responses/SOL005_resp.yaml#/components/responses/409 + $ref: '#/components/responses/IndividualVnfPackageVnfd.Get.409' "500": $ref: ../responses/SOL005_resp.yaml#/components/responses/500 "503": @@ -254,16 +232,14 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization get: - summary: Get the content of external VNF package artifacts. description: | The GET method reads the access configuration information that is used by the NFVO to get the content of external - VNF package artifacts. This method shall follow the provisions specified in the Tables 9.4.4a.3.2-1 and 9.4.4a.3.2-2 - for URI query parameters, request and response data structures, and response codes. + VNF package artifacts. See clause 9.4.4a.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept responses: "200": - $ref: '#/components/responses/IndividualVnfPackageExtArtifacts.Get' + $ref: '#/components/responses/IndividualVnfPackageExtArtifacts.Get.200' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -284,14 +260,9 @@ paths: $ref: ../responses/SOL005_resp.yaml#/components/responses/504 put: - summary: Download the content of external VNF package artifacts. description: | The PUT method provides the access configuration information for the NFVO to download the content of external - VNF package artifacts. As precondition for invoking this method, the individual VNF package resource shall have - been created, and the value of "onboardingState" attribute shall equal to "CREATED" or "ERROR". The resource - representation in the payload body of the PUT request shall replace the current state of the resource. This method - shall follow the provisions specified in the Tables 9.4.4a.3.3-1 and 9.4.4a.3.3-2 for URI query parameters, request - and response data structures, and response codes. + VNF package artifacts. See clause 9.4.4a.3.4. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType requestBody: @@ -314,7 +285,7 @@ paths: "406": $ref: ../responses/SOL005_resp.yaml#/components/responses/406 "409": - $ref: ../responses/SOL005_resp.yaml#/components/responses/409 + $ref: '#/components/responses/IndividualVnfPackageExtArtifacts.Put.409' "500": $ref: ../responses/SOL005_resp.yaml#/components/responses/500 "503": @@ -329,13 +300,13 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization get: description: | - The GET method reads the content of the manifest within a VNF package. + The GET method reads the content of the manifest within a VNF package. See clause 9.4.4b.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/include_signatures responses: "200": - $ref: '#/components/responses/IndividualVnfPackageManifest.Get' + $ref: '#/components/responses/IndividualVnfPackageManifest.Get.200' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -347,9 +318,9 @@ paths: "405": $ref: ../responses/SOL005_resp.yaml#/components/responses/405 "406": - $ref: ../responses/SOL005_resp.yaml#/components/responses/406 + $ref: '#/components/responses/IndividualVnfPackageManifest.Get.406' "409": - $ref: ../responses/SOL005_resp.yaml#/components/responses/409 + $ref: '#/components/responses/IndividualVnfPackageManifest.Get.409' "500": $ref: ../responses/SOL005_resp.yaml#/components/responses/500 "503": @@ -363,23 +334,17 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization get: - summary: Fetch an on-boarded VNF package. description: | The GET method fetches the content of a VNF package identified by the VNF package identifier allocated by the - NFVO. The content of the package is provided as onboarded, i.e. depending on the security option used, the CSAR - or the CSAR wrapped in a ZIP archive together with an external signature is returned, as defined in clause 5.1 - of ETSI GS NFV-SOL 004 [5]. NOTE: Information about the applicable security option can be obtained by evaluating - the "packageSecurityOption" attribute in the "VnfPkgInfo" structure. This method shall follow the provisions - specified in the Tables 9.4.5.3.2-1 and 9.4.5.3.2-2 for URI query parameters, request and response data structures, - and response codes. + NFVO. See clause 9.4.5.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/Range responses: "200": - $ref: '#/components/responses/IndividualVnfPackageContent.Get' + $ref: '#/components/responses/IndividualVnfPackageContent.Get.200' "206": - $ref: ../responses/SOL005_resp.yaml#/components/responses/206 + $ref: '#/components/responses/IndividualVnfPackageContent.Get.206' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -393,9 +358,9 @@ paths: "406": $ref: ../responses/SOL005_resp.yaml#/components/responses/406 "409": - $ref: ../responses/SOL005_resp.yaml#/components/responses/409 + $ref: '#/components/responses/IndividualVnfPackageContent.Get.409' "416": - $ref: ../responses/SOL005_resp.yaml#/components/responses/416 + $ref: '#/components/responses/IndividualVnfPackageContent.Get.416' "500": $ref: ../responses/SOL005_resp.yaml#/components/responses/500 "503": @@ -404,17 +369,9 @@ paths: $ref: ../responses/SOL005_resp.yaml#/components/responses/504 put: - summary: Upload a VNF package by providing the content of the VNF package. - description: | - The PUT method uploads the content of a VNF package. This method shall follow the provisions specified in the - Tables 9.4.5.3.3-1 and 9.4.5.3.3-2 for URI query parameters, request and response data structures, and response - codes. Upon start of the upload of the package, the NFVO shall set the "onboardingState" attribute in the "VnfPkgInfo" - structure to "UPLOADING". Upon successful upload of the package, if the package references external artifacts, the - NFVO shall obtain the external artifacts. Subsequently, upon success, the NFVO shall set that attribute to "PROCESSING" - and shall process the package, which shall include checking package consistency. Upon successful processing, the NFVO - shall set the "onboardingState" attribute to "ONBOARDED". If an error occurs during uploading the package, downloading - the external artifacts or processing the package, the NFVO shall set the "onboardingState" attribute to "ERROR" and - shall populate the "onboardingFailureDetails" attribute in "VnfPkgInfo". + description: | + The PUT method uploads the content of a VNF package. + See clause 9.4.5.3.3. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType @@ -422,7 +379,7 @@ paths: $ref: '#/components/requestBodies/VnfPackageContentRequest' responses: "202": - $ref: '#/components/responses/IndividualVnfPackageContent.Put' + $ref: '#/components/responses/IndividualVnfPackageContent.Put.202' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -436,7 +393,7 @@ paths: "406": $ref: ../responses/SOL005_resp.yaml#/components/responses/406 "409": - $ref: ../responses/SOL005_resp.yaml#/components/responses/409 + $ref: '#/components/responses/IndividualVnfPackageContent.Put.409' "416": $ref: ../responses/SOL005_resp.yaml#/components/responses/416 "500": @@ -452,25 +409,10 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization get: - summary: Fetch set of VNF package artifacts. description: | The GET method shall return an archive that contains a set of artifacts according to the provisions for inclusion/exclusion defined below, embedded in a directory structure being the same as in the VNF package. - The criteria for exclusion/inclusion of an artifact in the archive are defined as follows: - * Artifacts that are software images shall be excluded from the archive. - * Artifacts that are external to the VNF package shall be excluded from the archive. - * All additional artifacts included in the VNF package that are MANO artifacts shall be included in the archive, - unless the URI query parameter "exclude_all_mano_artifacts" has been provided, in which case such artifacts - shall be excluded. - * All additional artifacts included in the VNF package that are non-MANO artifacts shall be included in the archive, - unless: - - the URI query parameter "exclude_all_non_mano_artifacts" has been provided, in which case such artifacts shall - be excluded; - - the URI query parameter "select_non_mano_artifact_sets" has been provided and is supported by the NFVO, - in which case only those non-MANO artifacts shall be included whose non-MANO artifact set identifier matches - one of the values of the query parameter. Package metadata such as manifest file or VNFD shall not be included - in the archive. This method shall follow the provisions specified in the Tables 9.4.5a.3.2-1 and 9.4.5a.3.2-2 - for URI query parameters, request and response data structures, and response codes. + See clause 9.4.5a.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/Range @@ -481,9 +423,9 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/include_external_artifacts responses: "200": - $ref: '#/components/responses/IndividualVnfPackageArtifacts.Get' + $ref: '#/components/responses/IndividualVnfPackageArtifacts.Get.200' "206": - $ref: ../responses/SOL005_resp.yaml#/components/responses/206 + $ref: '#/components/responses/IndividualVnfPackageArtifacts.Get.206' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -497,9 +439,9 @@ paths: "406": $ref: ../responses/SOL005_resp.yaml#/components/responses/406 "409": - $ref: ../responses/SOL005_resp.yaml#/components/responses/409 + $ref: '#/components/responses/IndividualVnfPackageArtifacts.Get.409' "416": - $ref: ../responses/SOL005_resp.yaml#/components/responses/416 + $ref: '#/components/responses/IndividualVnfPackageArtifacts.Get.416' "500": $ref: ../responses/SOL005_resp.yaml#/components/responses/500 "503": @@ -513,28 +455,16 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization post: - summary: Upload a VNF package by providing the address information of the VNF - package. - description: | - The POST method provides the information for the NFVO to get the content of a VNF package. This method shall - follow the provisions specified in the Tables 9.4.6.3.1-1 and 9.4.6.3.1-2 for URI query parameters, request - and response data structures, and response codes. Upon start of obtaining the package, the NFVO shall set the - "onboardingState" attribute in the "VnfPkgInfo" structure to "UPLOADING". Upon successfully obtaining the - package, if the package references external artifacts, the NFVO shall obtain the external artifacts. Subsequently, - upon success, the NFVO shall set that attribute to "PROCESSING" and shall process the package, which shall include - checking package consistency. Upon successful processing, the NFVO shall set the "onboardingState" attribute to - "ONBOARDED", the "operationalState" attribute to "ENABLED", and the "usageState" attribute to "NOT_IN_USE". - In addition, the NFVO shall set the value of the attributes in the "VnfPkgInfo" that are copied from the VNFD - (refer to clause 9.5.2.5). If an error occurs during obtaining the package, downloading the external artifacts or processing - the package, the NFVO shall set the "onboardingState" attribute to "ERROR" and shall populate the "onboardingFailureDetails" - attribute in "VnfPkgInfo". + description: | + The POST method provides the information for the NFVO to get the content of a VNF package. + See clause 9.4.6.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType requestBody: $ref: '#/components/requestBodies/VnfPackageUploadFromUriRequest' responses: "202": - $ref: '#/components/responses/IndividualVnfPackageUploadFromUri.Post' + $ref: '#/components/responses/IndividualVnfPackageUploadFromUri.Post.202' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -548,7 +478,7 @@ paths: "406": $ref: ../responses/SOL005_resp.yaml#/components/responses/406 "409": - $ref: ../responses/SOL005_resp.yaml#/components/responses/409 + $ref: '#/components/responses/IndividualVnfPackageUploadFromUri.Post.409' "416": $ref: ../responses/SOL005_resp.yaml#/components/responses/416 "500": @@ -565,20 +495,18 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization get: - summary: Fetch individual VNF package artifact. description: | - The GET method fetches the content of an artifact within a VNF package. This method shall follow the provisions - specified in the Tables 9.4.7.3.2-1 and 9.4.7.3.2-2 for URI query parameters, request and response data structures, - and response codes. + The GET method fetches the content of an artifact within a VNF package. + See clause 9.4.7.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/Range - $ref: ../components/SOL005_params.yaml#/components/parameters/include_signatures responses: "200": - $ref: '#/components/responses/IndividualVnfPackageArtifact.Get' + $ref: '#/components/responses/IndividualVnfPackageArtifact.Get.200' "206": - $ref: ../responses/SOL005_resp.yaml#/components/responses/206 + $ref: '#/components/responses/IndividualVnfPackageArtifact.Get.206' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -590,11 +518,11 @@ paths: "405": $ref: ../responses/SOL005_resp.yaml#/components/responses/405 "406": - $ref: ../responses/SOL005_resp.yaml#/components/responses/406 + $ref: '#/components/responses/IndividualVnfPackageArtifact.Get.406' "409": - $ref: ../responses/SOL005_resp.yaml#/components/responses/409 + $ref: '#/components/responses/IndividualVnfPackageArtifact.Get.409' "416": - $ref: ../responses/SOL005_resp.yaml#/components/responses/416 + $ref: '#/components/responses/IndividualVnfPackageArtifact.Get.416' "500": $ref: ../responses/SOL005_resp.yaml#/components/responses/500 "503": @@ -607,19 +535,16 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization get: - summary: Query multiple subscriptions. description: | The GET method queries the list of active subscriptions of the functional block that invokes the method. - It can be used e.g. for resynchronization after error situations. This method shall follow the provisions - specified in the Tables 9.4.8.3.2-1 and 9.4.8.3.2-2 for URI query parameters, request and response data - structures, and response codes. + It can be used e.g. for resynchronization after error situations. See clause 9.4.7.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/filter - $ref: ../components/SOL005_params.yaml#/components/parameters/nextpage_opaque_marker responses: "200": - $ref: '#/components/responses/VnfPkgSubscriptions.Get' + $ref: '#/components/responses/VnfPkgSubscriptions.Get.200' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -640,18 +565,8 @@ paths: $ref: ../responses/SOL005_resp.yaml#/components/responses/504 post: - summary: Subscribe to notifications related to on-boarding and/or changes of VNF packages. - description: | - The POST method creates a new subscription. This method shall follow the provisions specified in the Tables - 9.4.8.3.1-1 and 9.4.8.3.1-2 for URI query parameters, request and response data structures, and response codes. - As the result of successfully executing this method, a new "Individual subscription" resource shall exist as - defined in clause 9.4.9. This method shall not trigger any notification. Creation of two subscription resources - with the same callbackURI and the same filter can result in performance degradation and will provide duplicates - of notifications to the OSS, and might make sense only in very rare use cases. Consequently, the NFVO may either - allow creating a subscription resource if another subscription resource with the same filter and callbackUri - already exists (in which case it shall return the "201 Created" response code), or may decide to not create a - duplicate subscription resource (in which case it shall return a "303 See Other" response code referencing the - existing subscription resource with the same filter and callbackUri). + description: | + The POST method creates a new subscription. See clause 9.4.8.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType @@ -659,9 +574,9 @@ paths: $ref: '#/components/requestBodies/VnfPkgSubscriptionRequest' responses: "201": - $ref: '#/components/responses/VnfPkgSubscriptions.Post' + $ref: '#/components/responses/VnfPkgSubscriptions.Post.201' "303": - $ref: ../responses/SOL005_resp.yaml#/components/responses/303 + $ref: '#/components/responses/VnfPkgSubscriptions.Post.303' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -675,7 +590,7 @@ paths: "406": $ref: ../responses/SOL005_resp.yaml#/components/responses/406 "422": - $ref: ../responses/SOL005_resp.yaml#/components/responses/422 + $ref: '#/components/responses/VnfPkgSubscriptions.Post.422' "500": $ref: ../responses/SOL005_resp.yaml#/components/responses/500 "503": @@ -689,14 +604,13 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization get: - summary: Read an individual subscription resource. description: | - Query Subscription Information The GET method reads an individual subscription. + The GET method reads an individual subscription. See clause 9.4.9.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept responses: "200": - $ref: '#/components/responses/VnfPkgSubscription.Get' + $ref: '#/components/responses/VnfPkgSubscription.Get.200' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -717,17 +631,11 @@ paths: $ref: ../responses/SOL005_resp.yaml#/components/responses/504 delete: - summary: Terminate a subscription. - description: | - The DELETE method terminates an individual subscription. This method shall follow the provisions specified in the - Tables 9.4.9.3.5-1 and 9.4.9.3.5-2 for URI query parameters, request and response data structures, and response codes. - As the result of successfully executing this method, the "Individual subscription" resource shall not exist any longer. - This means that no notifications for that subscription shall be sent to the formerly-subscribed API consumer. - NOTE: Due to race conditions, some notifications might still be received by the formerly-subscribed API consumer - for a certain time period after the deletion. + description: | + The DELETE method terminates an individual subscription. See clause 9.4.9.3.5. responses: "204": - $ref: '#/components/responses/VnfPkgSubscription.Delete' + $ref: '#/components/responses/VnfPkgSubscription.Delete.204' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -849,7 +757,7 @@ components: required: true responses: - VnfPackages.Get: + VnfPackages.Get.200: description: | 200 OK Shall be returned when information about zero or more VNF packages has been queried successfully. @@ -890,7 +798,7 @@ components: items: $ref: ./definitions/SOL005VNFPackageManagement_def.yaml#/definitions/VnfPkgInfo - VnfPackages.Post: + VnfPackages.Post.201: description: | 201 Created Shall be returned when an "Individual VNF package" resource has been created successfully. The response body @@ -926,7 +834,7 @@ components: schema: $ref: ./definitions/SOL005VNFPackageManagement_def.yaml#/definitions/VnfPkgInfo - IndividualVnfPackage.Get: + IndividualVnfPackage.Get.200: description: | 200 OK Shall be returned when information of the VNF package has been read successfully. The response body shall @@ -960,7 +868,7 @@ components: schema: $ref: ./definitions/SOL005VNFPackageManagement_def.yaml#/definitions/VnfPkgInfo - IndividualVnfPackage.Delete: + IndividualVnfPackage.Delete.204: description: | 204 No Content The VNF package has been deleted successfully. The response body shall be empty. @@ -974,7 +882,44 @@ components: type: string content: {} - IndividualVnfPackage.Patch: + IndividualVnfPackage.Delete.409: + description: | + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to a conflict with + the state of the resource. + Typically, this is due to the fact that the operational state of the VNF package resource is "ENABLED", or the + usage state is "IN_USE" (i.e. "Individual VNF instance" resource created from the concerned VNF package exists). + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall convey more + information about the error. + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + + IndividualVnfPackage.Patch.200: description: | 200 OK Shall be returned when the operation has been completed successfully. The response body shall contain @@ -1006,7 +951,45 @@ components: schema: $ref: ./definitions/SOL005VNFPackageManagement_def.yaml#/definitions/VnfPkgInfoModifications - IndividualVnfPackageVnfd.Get: + IndividualVnfPackage.Patch.409: + description: | + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, + due to a conflict with the state of the resource. + Typically, this is due to any of the following scenarios: + - Disable a VNF package resource of which the operational state is not "ENABLED" + - Enable a VNF package resource of which the operational state is not "DISABLED" + The response body shall contain a ProblemDetails structure, in which the "detail" + attribute shall convey more information about the error. + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + + IndividualVnfPackageVnfd.Get.200: description: | 200 OK Shall be returned when the content of the VNFD has been read successfully. The payload body shall contain a @@ -1037,7 +1020,44 @@ components: type: string content: {} - IndividualVnfPackageExtArtifacts.Get: + IndividualVnfPackageVnfd.Get.409: + description: | + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to a conflict + with the state of the resource. + Typically, this is due to the fact that "onboardingState" of the VNF package has a value different from + "ONBOARDED". + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall convey + more information about the error. + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + + IndividualVnfPackageExtArtifacts.Get.200: description: | 200 OK Shall be returned when the access configuration information has been read successfully. @@ -1105,6 +1125,13 @@ components: IndividualVnfPackageExtArtifacts.Put.202: description: | 202 ACCEPTED + + "onboardingState" = "ERROR" and the VNF package has been uploaded successfully previously, to indicate that + the access configuration information has been stored successfully by the NFVO and the NFVO now starts downloading external artifacts. + The response body shall be empty. + Prior to returning the 202 response, the NFVO shall set the "onboardingState" attribute to "UPLOADING". + Subsequently to returning the 202 response, the NFVO shall retry the download of those external artifacts + that have failed downloading, or that were downloaded successfully previously and for which modified access configuration information has been provided in the request. headers: Version: description: | @@ -1136,7 +1163,44 @@ components: format: url content: {} - IndividualVnfPackageManifest.Get: + IndividualVnfPackageExtArtifacts.Put.409: + description: | + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to a + conflict with the state of the resource. + Typically, this is due to the fact that the "onboardingState" attribute contains a value different + from "CREATED" or "ERROR". + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall + convey more information about the error. + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + + IndividualVnfPackageManifest.Get.200: description: | 200 OK Shall be returned when the content of the manifest has been read successfully. If the "include_signatures" URI @@ -1171,12 +1235,13 @@ components: type: string content: {} - IndividualVnfPackageContent.Get: + IndividualVnfPackageManifest.Get.406: description: | - 200 OK - Shall be returned when the whole content of the VNF package file has been read successfully. The response body - shall include a copy of the VNF package file. The "Content-Type" HTTP header shall be set according to the type - of the file, i.e. to "application/zip" for a VNF Package as defined in ETSI GS NFV-SOL 004. + 406 Not Acceptable + + If the related request contained an "Accept" header not compatible with the Content type "application/zip" but + the "include_signatures" flag was provided, the NFVO shall respond with this response code. + The "ProblemDetails" structure may be included with the "detail" attribute providing more information about the error. headers: Version: description: | @@ -1199,13 +1264,17 @@ components: explode: false schema: type: string - content: {} - IndividualVnfPackageContent.Put: + IndividualVnfPackageManifest.Get.409: description: | - 202 ACCEPTED - Shall be returned when the VNF package has been accepted for uploading, but the processing has not been completed. - It is expected to take some time for processing. The response body shall be empty. See note. + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to a conflict with + the state of the resource. + Typically, this is due to the fact that "onboardingState" of the VNF package has a value different + from "ONBOARDED". + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall convey + more information about the error. headers: Version: description: | @@ -1214,16 +1283,31 @@ components: explode: false schema: type: string - content: {} + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" - IndividualVnfPackageArtifacts.Get: + IndividualVnfPackageContent.Get.200: description: | 200 OK - Shall be returned when the whole content of the archive containing the artifact files has been read successfully. - The payload body shall be a ZIP archive containing the requested set of artifacts selected according to the provisions - specified above in this clause, and, if the flag "include_signatures" was provided in the related request, the - applicable signature files and, if available, the separate certificate files from the VNF package. - The "Content-Type" HTTP header shall be set to "application/zip". + Shall be returned when the whole content of the VNF package file has been read successfully. The response body + shall include a copy of the VNF package file. The "Content-Type" HTTP header shall be set according to the type + of the file, i.e. to "application/zip" for a VNF Package as defined in ETSI GS NFV-SOL 004. headers: Version: description: | @@ -1248,11 +1332,15 @@ components: type: string content: {} - IndividualVnfPackageUploadFromUri.Post: + IndividualVnfPackageContent.Get.206: description: | - 202 Accepted - The information about the VNF package has been received successfully, but the on-boarding has not been completed. - It is expected to take some time for processing. The response body shall be empty. + 206 Partial Content + + If the NFVO supports range requests, this response shall be returned when a single consecutive byte range + from the content of the VNF package file has been read successfully according to the request. + The response body shall contain the requested part of the VNF package file. + The "Content-Range" HTTP header shall be provided according to IETF RFC 7233 [10]. + The "Content-Type" HTTP header shall be set as defined above for the "200 OK" response. headers: Version: description: | @@ -1261,20 +1349,37 @@ components: explode: false schema: type: string - content: {} + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + Content-Range: + description: The Content-Range response HTTP header indicates where in a full body message a partial message belongs. + style: simple + explode: false + schema: + type: string - IndividualVnfPackageArtifact.Get: + IndividualVnfPackageContent.Get.409: description: | - 200 OK Shall be returned when the whole content of the artifact file has been read successfully. If the - "include_signatures" request URI parameter was not provided in the related request, the payload body shall - contain a copy of the artifact file from the VNF package, as defined by ETSI GS NFV-SOL 004 [5], and the - "Content-Type" HTTP header shall be set according to the content type of the artifact file. If the artifact - is encrypted, the header shall be set to the value "application/cms" (IETF RFC 7193 [17]). If the content - type cannot be determined, the header shall be set to the value "application/octet-stream". - If the "include_signatures" request URI parameter was provided in the related request, the "ContentType" - HTTP header shall be set to "application/zip" and the payload body shall contain a ZIP archive which includes: - - a copy of the artifact file from the VNF package, as defined by ETSI GS NFV-SOL 004 [5]; - - the related security information (individual signature file and optional related individual certificate file). + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to a conflict + with the state of the resource. + Typically, this is due to the fact that "onboardingState" of the VNF package has a value different from + "ONBOARDED". + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall convey + more information about the error. headers: Version: description: | @@ -1297,18 +1402,18 @@ components: explode: false schema: type: string - content: {} + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" - VnfPkgSubscriptions.Get: + IndividualVnfPackageContent.Get.416: description: | - 200 OK - Shall be returned when the list of subscriptions has been queried successfully. The response body shall contain - in an array the representations of all active subscriptions of the functional block that invokes the method, - i.e. zero or more representations of VNF package management subscriptions, as defined in clause 9.5.2.7. - If the "filter" URI parameter was supplied in the request, the data in the response body shall have been - transformed according to the rules specified in clause 5.2.2 of ETSI GS NFV-SOL 013. If the NFVO supports - alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS NFV SOL 013 for this resource, inclusion of the - Link HTTP header in this response shall follow the provisions in clause 5.4.2.3 of ETSI GS NFV SOL 013. + 416 Range Not Satisfiable + + Shall be returned upon the following error: The byte range passed in the "Range" header did not match + any available byte range in the VNF package file (e.g. "access after end of file"). + The response body may contain a ProblemDetails structure. headers: Version: description: | @@ -1331,19 +1436,32 @@ components: explode: false schema: type: string - content: - application/json: + + IndividualVnfPackageContent.Put.202: + description: | + 202 ACCEPTED + Shall be returned when the VNF package has been accepted for uploading, but the processing has not been completed. + It is expected to take some time for processing. The response body shall be empty. See note. + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false schema: - type: array - items: - $ref: ./definitions/SOL005VNFPackageManagement_def.yaml#/definitions/PkgmSubscription + type: string + content: {} - VnfPkgSubscriptions.Post: + IndividualVnfPackageContent.Put.409: description: | - 201 Created - Shall be returned when the subscription has been created successfully. The response body shall contain a - representation of the created "Individual subscription" resource. The HTTP response shall include a "Location" - HTTP header that points to the created resource. + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to a conflict with + the state of the resource. + Typically, this is due to the fact that the onboarding state of the VNF package resource is not "CREATED" + or "ERROR". + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall convey + more information about the error. headers: Version: description: | @@ -1369,9 +1487,522 @@ components: content: application/json: schema: - $ref: ./definitions/SOL005VNFPackageManagement_def.yaml#/definitions/PkgmSubscription + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + + IndividualVnfPackageArtifacts.Get.200: + description: | + 200 OK + Shall be returned when the whole content of the archive containing the artifact files has been read successfully. + The payload body shall be a ZIP archive containing the requested set of artifacts selected according to the provisions + specified above in this clause, and, if the flag "include_signatures" was provided in the related request, the + applicable signature files and, if available, the separate certificate files from the VNF package. + The "Content-Type" HTTP header shall be set to "application/zip". + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + content: {} + + IndividualVnfPackageArtifacts.Get.206: + description: | + 206 Partial Content + + If the NFVO supports range requests, this response shall be returned when a single consecutive byte + range from the content of the archive that would have been returned in a "200 OK" response has been + read successfully according to the request. + The response body shall contain the requested part of the archive. + The "Content-Type" HTTP header shall be set to "application/zip". + The "Content-Range" HTTP header shall be provided according to IETF RFC 7233 [10]. + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + Content-Range: + description: The Content-Range response HTTP header indicates where in a full body message a partial message belongs. + style: simple + explode: false + schema: + type: string + + IndividualVnfPackageArtifacts.Get.409: + description: | + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to a + conflict with the state of the resource. + Typically, this is due to the fact that "onboardingState" of the VNF package has a value different from "ONBOARDED". + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall + convey more information about the error. + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + + IndividualVnfPackageArtifacts.Get.416: + description: | + 416 Range Not Satisfiable + + Shall be returned upon the following error: The byte range passed in the "Range" header did not match + any available byte range in the archive file (e.g. "access after end of file"). + The response body may contain a ProblemDetails structure. + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + + IndividualVnfPackageUploadFromUri.Post.202: + description: | + 202 Accepted + The information about the VNF package has been received successfully, but the on-boarding has not been completed. + It is expected to take some time for processing. The response body shall be empty. + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + content: {} + + IndividualVnfPackageUploadFromUri.Post.409: + description: | + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to a + conflict with the state of the resource. + Typically, this is due to the fact that the on-boarding state of the VNF package resource is not + "CREATED" or "ERROR". + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall + convey more information about the error. + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + + IndividualVnfPackageArtifact.Get.200: + description: | + 200 OK Shall be returned when the whole content of the artifact file has been read successfully. If the + "include_signatures" request URI parameter was not provided in the related request, the payload body shall + contain a copy of the artifact file from the VNF package, as defined by ETSI GS NFV-SOL 004 [5], and the + "Content-Type" HTTP header shall be set according to the content type of the artifact file. If the artifact + is encrypted, the header shall be set to the value "application/cms" (IETF RFC 7193 [17]). If the content + type cannot be determined, the header shall be set to the value "application/octet-stream". + If the "include_signatures" request URI parameter was provided in the related request, the "ContentType" + HTTP header shall be set to "application/zip" and the payload body shall contain a ZIP archive which includes: + - a copy of the artifact file from the VNF package, as defined by ETSI GS NFV-SOL 004 [5]; + - the related security information (individual signature file and optional related individual certificate file). + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + content: {} + + IndividualVnfPackageArtifact.Get.206: + description: | + 206 Partial Content + + If the NFVO supports range requests and the "include_signatures" request URI parameter was not present in the + related request, this response shall be returned when a single consecutive byte range from the content of + the artifact file has been read successfully according to the request. The response body shall contain the + requested part of the artifact file from the VNF package, as defined by ETSI GS NFV-SOL 004 [5]. + The "Content-Type" HTTP header shall be set according to the content type of the artifact file. If the + content type cannot be determined, the header shall be set to the value "application/octet-stream". + The "Content-Range" HTTP header shall be provided according to IETF RFC 7233 [10]. + + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + Content-Range: + description: The Content-Range response HTTP header indicates where in a full body message a partial message belongs. + style: simple + explode: false + schema: + type: string + + IndividualVnfPackageArtifact.Get.406: + description: | + 406 Not Acceptable + + If the related request contained an "Accept" header not compatible with the Content type "application/zip" + but the "include_signatures" flag was provided, the NFVO shall respond with this response code. + The "ProblemDetails" structure may be included with the "detail" attribute providing more information about the error. + + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + + IndividualVnfPackageArtifact.Get.409: + description: | + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to a conflict + with the state of the resource. Typically, this is due to the fact that "onboardingState" of the VNF + package has a value different from "ONBOARDED". The response body shall contain a ProblemDetails structure, + in which the "detail" attribute shall convey more information about the error. + + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + + IndividualVnfPackageArtifact.Get.416: + description: | + 416 Range Not Satisfiable + + Shall be returned upon the following error: The byte range passed in the "Range" header did not match any + available byte range in the artifact file (e.g. "access after end of file"). + The response body may contain a ProblemDetails structure. + + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + + VnfPkgSubscriptions.Get.200: + description: | + 200 OK + Shall be returned when the list of subscriptions has been queried successfully. The response body shall contain + in an array the representations of all active subscriptions of the functional block that invokes the method, + i.e. zero or more representations of VNF package management subscriptions, as defined in clause 9.5.2.7. + If the "filter" URI parameter was supplied in the request, the data in the response body shall have been + transformed according to the rules specified in clause 5.2.2 of ETSI GS NFV-SOL 013. If the NFVO supports + alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS NFV SOL 013 for this resource, inclusion of the + Link HTTP header in this response shall follow the provisions in clause 5.4.2.3 of ETSI GS NFV SOL 013. + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + type: array + items: + $ref: ./definitions/SOL005VNFPackageManagement_def.yaml#/definitions/PkgmSubscription + + VnfPkgSubscriptions.Post.201: + description: | + 201 Created + Shall be returned when the subscription has been created successfully. The response body shall contain a + representation of the created "Individual subscription" resource. The HTTP response shall include a "Location" + HTTP header that points to the created resource. + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: ./definitions/SOL005VNFPackageManagement_def.yaml#/definitions/PkgmSubscription + + VnfPkgSubscriptions.Post.303: + description: | + 303 See Other + + Shall be returned when a subscription with the same callback URI and the same filter already + exists and the policy of the NFVO is to not create redundant subscriptions. + The HTTP response shall include a "Location" HTTP header that contains the resource URI of the + existing "Individual subscription" resource. + The response body shall be empty. + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + Location: + description: The resource URI of the created NS instance + style: simple + explode: false + schema: + type: string + format: url + + VnfPkgSubscriptions.Post.422: + description: | + 422 Unprocessable Entity + + Shall be returned upon the following error: The content type of the payload body is supported and the payload + body of a request contains syntactically correct data but the data cannot be processed. + The general cause for this error and its handling is specified in clause 6.4 of ETSI GS NFV-SOL 013 [16], + including rules for the presence of the response body. + Specifically in case of this resource, the response code 422 shall also be returned if the NFVO has tested + the Notification endpoint as described in clause 9.4.10.3.2 and the test has failed. + In this case, the "detail" attribute in the "ProblemDetails" structure shall convey more information about the error. + headers: + Version: + description: | + Version of the API used in the response. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" - VnfPkgSubscription.Get: + VnfPkgSubscription.Get.200: description: | 200 OK Shall be returned when information about an individual subscription has been read successfully. @@ -1403,7 +2034,7 @@ components: schema: $ref: ./definitions/SOL005VNFPackageManagement_def.yaml#/definitions/PkgmSubscription - VnfPkgSubscription.Delete: + VnfPkgSubscription.Delete.204: description: | No Content Shall be returned when information about an individual subscription has been read successfully. The response diff --git a/src/SOL005/VNFPackageManagement/definitions/SOL005VNFPackageManagement_def.yaml b/src/SOL005/VNFPackageManagement/definitions/SOL005VNFPackageManagement_def.yaml index 1e72448351f6708cb48a47a75d57fc1a08deaf7b..230927107ca8774c5eb905798813e77a35e38ef4 100644 --- a/src/SOL005/VNFPackageManagement/definitions/SOL005VNFPackageManagement_def.yaml +++ b/src/SOL005/VNFPackageManagement/definitions/SOL005VNFPackageManagement_def.yaml @@ -1,9 +1,18 @@ definitions: VnfPkgInfo: + description: > + This type represents the information of a VNF package. It shall comply with the provisions defined in table 9.5.2.5-1. + + NOTE 1: If the value of the onboardingState attribute is not equal to "ONBOARDED", the value of the + operationalState attribute shall be equal to "DISABLED". + NOTE 2: If the value of the onboardingState attribute is not equal to "ONBOARDED", the value of the + usageState attribute shall be equal to "NOT_IN_USE". + NOTE 3: State changes of a VNF package are illustrated in clause B.2. + NOTE 4: ETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA + specifications. type: object required: - id - - packageSecurityOption - onboardingState - operationalState - usageState @@ -67,8 +76,12 @@ definitions: description: > Signals the security option used by the package as defined in clause 5.1 of ETSI - GS NFV-SOL 004 [5]. - Valid values: OPTION_1, OPTION_2 + GS NFV-SOL 004. It shall be present after + the VNF package content has been on-boarded + and absent otherwise. + Valid values: + - OPTION_1 + - OPTION_2 type: string enum: - OPTION_1 @@ -100,15 +113,19 @@ definitions: $ref: "#/definitions/VnfPackageArtifactInfo" onboardingState: description: > - On-boarding state of the VNF package. + On-boarding state of the VNF package. See note 3. $ref: "#/definitions/PackageOnboardingStateType" operationalState: description: > Operational state of the VNF package. + + See note 1 and note 3. $ref: "#/definitions/PackageOperationalStateType" usageState: description: > Usage state of the VNF package. + + See note 2 and note 3. $ref: "#/definitions/PackageUsageStateType" vnfmInfo: description: > @@ -198,6 +215,18 @@ definitions: description: > Checksum of the artifact file. Permitted hash algorithms are defined in ETSI GS NFV-SOL 004. $ref: "../../definitions/SOL005_def.yaml#/definitions/Checksum" + isEncrypted: + description: > + Reflects whether the artifact is encrypted (true) or not (false). + type: boolean + nonManoArtifactSetId: + description: > + Non-MANO artifact set identifier of the non-MANO artifact + set to which the artifact belongs, as defined in + clause 4.3.7 of ETSI GS NFV-SOL 004 [5]. Shall be + provided if the artifact is a non-MANO artifact, and shall + be omitted otherwise. + type: string artifactClassification: description: > Marks specific types of artifacts as defined in the VNF @@ -205,28 +234,16 @@ definitions: applies, the attribute shall not be present. Valid values: - HISTORY: a history artifact as per clause 4.3.3 - in ETSI GS NFV-SOL 004 [5] + in ETSI GS NFV-SOL 004 - TESTING: a testing artifact as per clause 4.3.4 - in ETSI GS NFV-SOL 004 [5] + in ETSI GS NFV-SOL 004 - LICENSE: a license artifact as per clause 4.3.5 - in ETSI GS NFV-SOL 004 [5] + in ETSI GS NFV-SOL 004 type: string enum: - HISTORY - TESTING - LICENSE - isEncrypted: - description: > - Reflects whether the artifact is encrypted (true) or not (false). - type: boolean - nonManoArtifactSetId: - description: > - Non-MANO artifact set identifier of the non-MANO artifact - set to which the artifact belongs, as defined in - clause 4.3.7 of ETSI GS NFV-SOL 004 [5]. Shall be - provided if the artifact is a non-MANO artifact, and shall - be omitted otherwise. - type: string metadata: description: > The metadata of the artifact that are available in the @@ -255,6 +272,8 @@ definitions: VnfPackageSoftwareImageInfo: description: > This type represents an artifact contained in or external to a VNF package which represents a software image. + NOTE 1: The list of permitted values was taken from "Container formats" in OpenStack®: "Disk and container formats for images". + NOTE 2: The list of permitted values was adapted from "Disk formats" in OpenStack®: "Disk and container formats for images". required: - id - name @@ -308,6 +327,8 @@ definitions: - DOCKER: docker container format - OVA: OVF package in a tar file - OVF: OVF container format + + See note 1. type: string enum: - AKI @@ -334,6 +355,8 @@ definitions: - VHD: a common disk image format - VHDX: enhanced version of VHD format - VMDK: a common disk image format + + See note 2. type: string enum: - AKI @@ -456,6 +479,9 @@ definitions: description: > This type represents modifications to the information of a VNF package. It shall comply with the provisions defined in Table 9.5.2.3-1. + NOTE: At least one of the two parameters shall be present. If the VNF package + is not on-boarded, the operation is used only to update existing or add additional + user defined data using the userDefinedData attribute. anyOf: - required: - operationalState @@ -465,11 +491,11 @@ definitions: operationalState: description: > New value of the operational state of the on-boarded - instance of the VNF package. + instance of the VNF package. See note. $ref: "#/definitions/PackageOperationalStateType" userDefinedData: description: > - User defined data to be updated. For existing keys, the value is replaced. + User defined data to be updated. For existing keys, the value is replaced. See note. $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs" UploadVnfPkgFromUriRequest: @@ -617,7 +643,21 @@ definitions: 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). + + NOTE 1: The permitted values of the "notificationTypes" attribute are spelled exactly as the names + of the notification types to facilitate automated code generation systems. + NOTE 2: The attributes "vnfProductsFromProviders", "vnfdId", and "vnfPkgId" are alternatives to + reference particular VNF packages in a filter. They should not be used both in the same filter instance, + but one alternative should be chosen. + type: object + oneOf: + - required: + - vnfProductsFromProviders + - required: + - vnfdId + - required: + - vnfPkgId properties: notificationTypes: description: > @@ -625,6 +665,8 @@ definitions: Permitted values: - VnfPackageOnboardingNotification - VnfPackageChangeNotification + + See note 1. type: string enum: - VnfPackageOnboardingNotification @@ -632,18 +674,12 @@ definitions: vnfProductsFromProviders: description: > If present, match VNF packages that contain VNF products from certain providers. + See note 2. type: array items: type: object required: - vnfProvider - oneOf: - - required: - - vnfProductsFromProviders - - required: - - vnfdId - - required: - - vnfPkgId properties: vnfProvider: description: > @@ -689,51 +725,53 @@ definitions: type: array items: $ref: "../../definitions/SOL005_def.yaml#/definitions/Version" - vnfdId: - description: > - Match VNF packages with a VNFD identifier - listed in the attribute. - type: array - items: - $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" - vnfPkgId: - description: > - Match VNF packages with a package identifier - listed in the attribute. - May be present if the "notificationTypes" - attribute contains the value - "VnfPackageChangeNotification", and shall be - absent otherwise. - type: array - items: - $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" - operationalState: - description: > - Match VNF packages with a package identifier - listed in the attribute. - May be present if the "notificationTypes" - attribute contains the value - "VnfPackageChangeNotification", and shall be - absent otherwise. - type: array - items: - $ref: "#/definitions/PackageOperationalStateType" - usageState: - description: > - Match particular usage state of the on-boarded VNF package. - May be present if the "notificationTypes" - attribute contains the value - "VnfPackageChangeNotification", and shall be - absent otherwise. - type: array - items: - $ref: "#/definitions/PackageUsageStateType" - vnfmInfo: - description: > - Match strings that specify VNFMs compatible with the VNF. See Table 9.5.2.5-1. - type: array - items: - type: string + vnfdId: + description: > + Match VNF packages with a VNFD identifier + listed in the attribute. + See note 2. + type: array + items: + $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" + vnfPkgId: + description: > + Match VNF packages with a package identifier + listed in the attribute. + May be present if the "notificationTypes" + attribute contains the value + "VnfPackageChangeNotification", and shall be + absent otherwise. + See note 2. + type: array + items: + $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" + operationalState: + description: > + Match VNF packages with a package identifier + listed in the attribute. + May be present if the "notificationTypes" + attribute contains the value + "VnfPackageChangeNotification", and shall be + absent otherwise. + type: array + items: + $ref: "#/definitions/PackageOperationalStateType" + usageState: + description: > + Match particular usage state of the on-boarded VNF package. + May be present if the "notificationTypes" + attribute contains the value + "VnfPackageChangeNotification", and shall be + absent otherwise. + type: array + items: + $ref: "#/definitions/PackageUsageStateType" + vnfmInfo: + description: > + Match strings that specify VNFMs compatible with the VNF. See Table 9.5.2.5-1. + type: array + items: + type: string PackageChangeType: diff --git a/src/SOL005/VNFPackageManagementNotification/VNFPackageManagementNotification.yaml b/src/SOL005/VNFPackageManagementNotification/VNFPackageManagementNotification.yaml index 84c6d7cbbf49ec0c51269448be8f09451fd0f649..59f5072c94780cfc71c89ca1cd96f9a455366af6 100644 --- a/src/SOL005/VNFPackageManagementNotification/VNFPackageManagementNotification.yaml +++ b/src/SOL005/VNFPackageManagementNotification/VNFPackageManagementNotification.yaml @@ -1,24 +1,30 @@ openapi: 3.0.2 info: - title: SOL005 - VNF Package Management Notification interface + title: SOL005 - VNF Package Management Notification Interface description: | - SOL005 - VNF Package Management Notification interface - IMPORTANT: Please note that this file might be not aligned to the current version of the ETSI Group Specification - it refers to. In case of discrepancies the published ETSI Group Specification takes precedence. + SOL005 - VNF Package Management Notification Interface + + IMPORTANT: Please note that this file might be not aligned to the current + version of the ETSI Group Specification it refers to. In case of + discrepancies the published ETSI Group Specification takes precedence. + Please report bugs to https://forge.etsi.org/rep/nfv/SOL005/issues + + contact: + name: NFV-SOL WG license: name: ETSI Forge copyright notice url: https://forge.etsi.org/etsi-forge-copyright-notice.txt - version: 2.0.0-impl:etsi.org:ETSI_NFV_OpenAPI:1 + version: 2.2.0-impl:etsi.org:ETSI_NFV_OpenAPI:1 externalDocs: - description: ETSI GS NFV-SOL 005 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.03.01_60/gs_nfv-sol005v030301p.pdf + description: ETSI GS NFV-SOL 005 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.05.01_60/gs_nfv-sol005v030501p.pdf servers: - - url: http://127.0.0.1/callback/v1 - - url: https://127.0.0.1/callback/v1 + - url: http://127.0.0.1/callback/v2 + - url: https://127.0.0.1/callback/v2 paths: @@ -27,15 +33,14 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization get: - summary: Notify about VNF package onboarding or change description: | - The POST method delivers a notification from the API producer to an API consumer. - The API consumer shall have previously created an "individual subscription resource" with a matching filter. + The GET method allows the API producer to test the notification endpoint that is provided by the API consumer, + e.g. during subscription. See clause 9.4.10.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept responses: "204": - $ref: '#/components/responses/VnfPackageOnboardingNotification.Get' + $ref: '#/components/responses/VnfPackageOnboardingNotification.Get.204' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -52,10 +57,9 @@ paths: $ref: ../responses/SOL005_resp.yaml#/components/responses/503 post: - summary: Notify about VNF package onboarding or change description: | - The POST method delivers a notification from the API producer to an API consumer. - The API consumer shall have previously created an "individual subscription resource" with a matching filter. + The POST method delivers a notification from the API producer to an API consumer. The API consumer shall + have previously created an "individual subscription resource" with a matching filter. See clause 9.4.10.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType @@ -63,7 +67,7 @@ paths: $ref: '#/components/requestBodies/VnfPackageOnboardingNotificationRequest' responses: "204": - $ref: '#/components/responses/VnfPackageOnboardingNotification.Post' + $ref: '#/components/responses/VnfPackageOnboardingNotification.Post.204' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -84,15 +88,14 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version - $ref: ../components/SOL005_params.yaml#/components/parameters/Authorization get: - summary: Test the notification endpoint description: | The GET method allows the API producer to test the notification endpoint that is provided by the API consumer, - e.g. during subscription. + e.g. during subscription. See clause 9.4.10.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept responses: "204": - $ref: '#/components/responses/VnfPackageChangeNotification.Get' + $ref: '#/components/responses/VnfPackageChangeNotification.Get.204' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -109,11 +112,9 @@ paths: $ref: ../responses/SOL005_resp.yaml#/components/responses/503 post: - summary: Notify about VNF package onboarding or change description: | - The POST method delivers a notification from the server to the client. This method shall follow the provisions - specified in the Tables 9.4.10.3.1-1 and 9.4.10.3.1-2 for URI query parameters, request and response data - structures, and response codes. + The POST method delivers a notification from the API producer to an API consumer. The API consumer shall + have previously created an "individual subscription resource" with a matching filter. See clause 9.4.10.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType @@ -121,7 +122,7 @@ paths: $ref: '#/components/requestBodies/VnfPackageChangeNotificationRequest' responses: "204": - $ref: '#/components/responses/VnfPackageChangeNotification.Post' + $ref: '#/components/responses/VnfPackageChangeNotification.Post.204' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -158,7 +159,7 @@ components: required: true responses: - VnfPackageOnboardingNotification.Get: + VnfPackageOnboardingNotification.Get.204: description: | 204 No Content Shall be returned to indicate that the notification endpoint has been tested successfully. @@ -181,7 +182,7 @@ components: type: string content: {} - VnfPackageOnboardingNotification.Post: + VnfPackageOnboardingNotification.Post.204: description: | 204 No Content Shall be returned when the notification has been delivered successfully. @@ -203,7 +204,7 @@ components: type: string content: {} - VnfPackageChangeNotification.Get: + VnfPackageChangeNotification.Get.204: description: | 204 No Content Shall be returned to indicate that the notification endpoint has been tested successfully. @@ -226,7 +227,7 @@ components: type: string content: {} - VnfPackageChangeNotification.Post: + VnfPackageChangeNotification.Post.204: description: | 204 No Content Shall be returned when the notification has been delivered successfully. diff --git a/src/SOL005/VNFSnapshotPackageManagement/VNFSnapshotPackageManagement.yaml b/src/SOL005/VNFSnapshotPackageManagement/VNFSnapshotPackageManagement.yaml index 449c0652367485641e9ba6a05b583f14c9a0a7f3..ca77053d1c2e8dee0b5f09da7654dc6b37d6d346 100644 --- a/src/SOL005/VNFSnapshotPackageManagement/VNFSnapshotPackageManagement.yaml +++ b/src/SOL005/VNFSnapshotPackageManagement/VNFSnapshotPackageManagement.yaml @@ -4,21 +4,23 @@ info: title: SOL005 - VNF Snapshot Package Management interface description: | SOL005 - VNF Snapshot Package Management interface - + IMPORTANT: Please note that this file might be not aligned to the current - version of the ETSI Group Specification it refers to and has not been approved by the ETSI NFV ISG. - In case of discrepancies the published ETSI Group Specification takes precedence. + version of the ETSI Group Specification it refers to. In case of + discrepancies the published ETSI Group Specification takes precedence. + Please report bugs to https://forge.etsi.org/rep/nfv/SOL005/issues + contact: name: NFV-SOL WG license: name: ETSI Forge copyright notice url: https://forge.etsi.org/etsi-forge-copyright-notice.txt - version: 1.0.0-impl:etsi.org:ETSI_NFV_OpenAPI:1 + version: 1.1.0-impl:etsi.org:ETSI_NFV_OpenAPI:1 externalDocs: - description: ETSI GS NFV-SOL 005 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.03.01_60/gs_nfv-sol005v030301p.pdf + description: ETSI GS NFV-SOL 005 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/03.05.01_60/gs_nfv-sol005v030501p.pdf servers: - url: http://127.0.0.1/vnfsnapshotpkgm/v1 @@ -38,7 +40,7 @@ paths: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept post: description: | - The POST method creates a new "Individual VNF snapshot package" resource. + The POST method creates a new "Individual VNF snapshot package" resource. See clause 11.4.2.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType requestBody: @@ -71,7 +73,7 @@ paths: get: description: | - The GET method queries the information of the VNF packages matching the filter. + The GET method queries the information of the VNF packages matching the filter. See clause 11.4.2.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/filter - $ref: ../components/SOL005_params.yaml#/components/parameters/all_fields @@ -115,7 +117,7 @@ paths: get: description: | - The GET method reads the information of an individual VNF snapshot package. + The GET method reads the information of an individual VNF snapshot package. See clause 11.4.3.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept responses: @@ -148,7 +150,7 @@ paths: patch: description: | - The PATCH method updates the information of a VNF snapshot package. + The PATCH method updates the information of a VNF snapshot package. See clause 11.4.3.3.4. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept @@ -170,18 +172,7 @@ paths: 406: $ref: ../responses/SOL005_resp.yaml#/components/responses/406 409: - # description: | - # 409 CONFLICT - - # Shall be returned upon the following error: The operation cannot be executed - # currently, due to a conflict with the state of the resource. - - # Typically, this is due to the fact that the state of the VNF snapshot package - # resource is in a state other than CREATED, ERROR_EXTRACTING or AVAILABLE. - - # The response body shall contain a ProblemDetails structure, in which the "detail" - # attribute shall convey more information about the error. - $ref: ../responses/SOL005_resp.yaml#/components/responses/409 + $ref: '#/components/responses/IndividualVNFSnapshotPackage.Patch.409' 416: $ref: ../responses/SOL005_resp.yaml#/components/responses/416 500: @@ -193,7 +184,7 @@ paths: delete: description: | - The DELETE method deletes an "Individual VNF snapshot package" resource. + The DELETE method deletes an "Individual VNF snapshot package" resource. See clause 11.4.3.3.5. responses: 204: $ref: '#/components/responses/IndividualVNFSnapshotPackage.Delete.204' @@ -210,18 +201,7 @@ paths: 406: $ref: ../responses/SOL005_resp.yaml#/components/responses/406 409: - # description: | - # 409 CONFLICT - - # Shall be returned upon the following error: The operation cannot be - # executed currently, due to a conflict with the state of the resource. - - # Typically, this is due to the fact that the operational state of the - # VNF snapshot package resource is other than CREATED, ERROR or AVAILABLE. - - # The response body shall contain a ProblemDetails structure, in which - # the "detail" attribute shall convey more information about the error. - $ref: ../responses/SOL005_resp.yaml#/components/responses/409 + $ref: '#/components/responses/IndividualVNFSnapshotPackage.Delete.409' 416: $ref: ../responses/SOL005_resp.yaml#/components/responses/416 500: @@ -238,10 +218,7 @@ paths: - $ref: '#/components/parameters/VnfSnapshotPkgId' get: description: | - The GET method fetches the content of a VNF snapshot package. - - The content of the package is provided as onboarded to the NFVO, - or as built by the NFVO. + The GET method fetches the content of a VNF snapshot package. See clause 11.4.4.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/Range @@ -263,9 +240,9 @@ paths: 406: $ref: ../responses/SOL005_resp.yaml#/components/responses/406 409: - $ref: ../responses/SOL005_resp.yaml#/components/responses/409 + $ref: '#/components/responses/VnfSnapshotPackageContent.Get.409' 416: - $ref: ../responses/SOL005_resp.yaml#/components/responses/416 + $ref: '#/components/responses/VnfSnapshotPackageContent.Get.416' 422: $ref: ../responses/SOL005_resp.yaml#/components/responses/422 429: @@ -279,13 +256,7 @@ paths: put: description: | - The PUT method uploads the content of a VNF package. - - The payload body contains a ZIP file that represents the VNF snapshot package. - - The "Content-Type" HTTP header shall be set according to the type of the file, i.e. - to "application/zip" for a VNF snapshot package. The VNF snapshot package format - is defined in ETSI GS NFV-SOL 010. + The PUT method uploads the content of a VNF package. See clause 11.4.4.3.3. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType responses: @@ -304,7 +275,7 @@ paths: 406: $ref: ../responses/SOL005_resp.yaml#/components/responses/406 409: - $ref: ../responses/SOL005_resp.yaml#/components/responses/409 + $ref: '#/components/responses/VnfSnapshotPackageContent.Put.409' 416: $ref: ../responses/SOL005_resp.yaml#/components/responses/416 422: @@ -326,7 +297,7 @@ paths: post: description: | The POST method provides the information for the NFVO to get the content of - a VNF snapshot package. + a VNF snapshot package. See clause 11.4.5.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType requestBody: @@ -347,7 +318,7 @@ paths: 406: $ref: ../responses/SOL005_resp.yaml#/components/responses/406 409: - $ref: ../responses/SOL005_resp.yaml#/components/responses/409 + $ref: '#/components/responses/UploadFromUri.Post.409' 416: $ref: ../responses/SOL005_resp.yaml#/components/responses/416 500: @@ -365,41 +336,7 @@ paths: post: description: | The POST method provides the information for the NFVO to start building - the content of a VNF snapshot package. - - If the request to build the content of a VNF snapshot package is accepted, the NFVO - shall allocate a globally unique identifier to the VNF snapshot package (i.e., - "vnfSnapshotPkgUniqueId"). To proceed with the packaging process, the NFVO shall - collect the constituent information and artifacts as indicated by the input information - in the request: - - "vnfSnapshotInfoId": references the VNF snapshot to be packaged. - - one or more "vnfcSnapshotInfoId" referencing specific VNFC snapshot constituents in - the VNF snapshot. - - Both identifiers are assumed to be known by the NFVO (as it holds the information of - available VNF snapshot of VNF that are part of the NS instance) and can also be retrieved - by the NFVO from the VNFM from the "id" attribute of the applicable "VnfSnapshot" in the - body of the response to a GET request querying the "Individual VNF snapshot" or the - "VNF snapshots" resource of the VNF LCM interface as specified in clause 5.4 of - ETSI GS NFV-SOL 003. - - The API consumer may indicate whether the VNF snapshotted resources on the NFVI shall - be included into the VNF snapshot package file or be left on the NFVI as external image - artifacts to the VNF snapshot package file. In case of building the VNF snapshot package - with snapshotted resources as external image artifacts, the NFVO shall set the value of - the "imageUri" and "imagePath" as specified in clause 11.5.3.2. - - The NFVO shall determine whether there is any conflict for building the content of the - VNF snapshot package, and in particular, determine if the VNF snapshot is complete by - checking the "createdAt" information of the VNF snapshot resource. - - In addition, the NFVO shall update the "state" attribute of the "VnfSnapshotPkgInfo" - during the build process as specified in clause 11.6. - - The NFVO shall build the VNF snapshot Package. - - NOTE: The format and provisions for building a VNF snapshot package are specified in - ETSI GS NFV-SOL 010. + the content of a VNF snapshot package. See clause 11.4.6.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType requestBody: @@ -420,7 +357,7 @@ paths: 406: $ref: ../responses/SOL005_resp.yaml#/components/responses/406 409: - $ref: ../responses/SOL005_resp.yaml#/components/responses/409 + $ref: '#/components/responses/BuildVnfSnapshotPkg.Post.409' 416: $ref: ../responses/SOL005_resp.yaml#/components/responses/416 500: @@ -438,26 +375,7 @@ paths: post: description: | The POST method provides the information for the NFVO to start extracting the content of - a VNF snapshot package. - - To proceed with the extraction process, the NFVO shall have been provided either with: - - a valid "Individual VNF snapshot" identifier, indicated by the input parameter "vnfSnapshotInfoId". - This identifier corresponds to a known "Individual VNF snapshot" resource of the VNF LCM interface - that the NFVO can obtain from the VNFM., or - - a valid "Individual VNF instance" identifier, indicated by the input parameter "vnfInstanceId". - This identifier corresponds to a known "Individual VNF instance" resource of the VNF LCM interface - that the NFVO can obtain from the VNFM. - - The NFVO shall determine whether there is any conflict for extracting the content of the VNF snapshot - package, and in particular: - - determine if the "Individual VNF snapshot" resource can be populated with the extracted content of - the VNF snapshot package, i.e., the "vnfSnapshot" attribute of the "Individual VNF snapshot" resource - is empty. - - determine if the content of the VNF snapshot package is available, and thus the "state" attribute of - the "VNF snapshot package" resource has a value equal to "AVAILABLE". - - In addition, the NFVO shall update the "state" attribute of the "VnfSnapshotPkgInfo" during the extraction - process and change it to "EXTRACTING". + a VNF snapshot package. See clause 11.4.7.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType requestBody: @@ -478,7 +396,7 @@ paths: 406: $ref: ../responses/SOL005_resp.yaml#/components/responses/406 409: - $ref: ../responses/SOL005_resp.yaml#/components/responses/409 + $ref: '#/components/responses/ExtractVnfSnapshotPkg.Post.409' 416: $ref: ../responses/SOL005_resp.yaml#/components/responses/416 500: @@ -496,22 +414,7 @@ paths: post: description: | The POST method provides the information for the NFVO to cancel the ongoing operation related to - the content of a VNF snapshot package. - - In case of success of processing the asynchronous request: - 1) If the request has been processed in "UPLOADING", "BUILDING" or "PROCESSING" state, the "state" - attribute in the representation of the "Individual VNF snapshot package" resource shall be changed - to"ERROR". - 2) If the request has been processed in "EXTRACTING" state, the "state" attribute in the representation - of the "Individual VNF snapshot package" resource shall be changed to "ERROR_EXTRACTING". - - In both cases, the NFVO shall update the "isCancelPending" attribute in the representation of the - "Individual VNF snapshot package" resource according to the provisions in clause 11.5.2.3 to reflect - the new status. - - Due to race conditions, the processing of the actual operation that is to be cancelled may eventually - still succeed, in which case the "state" attribute in the representation of the "Individual VNF snapshot - package" resource shall represent the result of that operation, rather than the result of the cancellation. + the content of a VNF snapshot package. See clause 11.4.8.3.1. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType requestBody: @@ -532,7 +435,7 @@ paths: 406: $ref: ../responses/SOL005_resp.yaml#/components/responses/406 409: - $ref: ../responses/SOL005_resp.yaml#/components/responses/409 + $ref: '#/components/responses/CancelVnfSnapshotPkg.Post.409' 416: $ref: ../responses/SOL005_resp.yaml#/components/responses/416 500: @@ -549,8 +452,8 @@ paths: - $ref: '#/components/parameters/VnfSnapshotPkgId' get: description: | - The GET method reads the access configuration information that is used by the NFVO to get - the content of external VNF snapshot package artifacts. + The GET method reads the access configuration information that is used by the NFVO to get the + content of external VNF snapshot package artifacts. See clause 11.4.9.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept responses: @@ -586,18 +489,11 @@ paths: put: description: | The PUT method provides the access configuration information for the NFVO to download - the content of external VNF package artifacts. - - As precondition for invoking this method, the "Individual VNF snapshot package" resource - shall have been created, and the value of "state" attribute in the representation of the - "Individual VNF snapshot package" resource shall equal to "CREATED" or "ERROR". - - The resource representation in the payload body of the PUT request shall replace the current - state of the resource. + the content of external VNF package artifacts. See clause 11.4.9.3.3. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/ContentType requestBody: - $ref: '#/components/requestBodies/VnfSnapshotPkgExtArtifactsAccessInfo' + $ref: '#/components/requestBodies/VnfSnapshotPkgExtArtifactsAccessConfig' responses: 200: $ref: '#/components/responses/ExternalArtifactsAccess.Put.200' @@ -614,7 +510,7 @@ paths: 406: $ref: ../responses/SOL005_resp.yaml#/components/responses/406 409: - $ref: ../responses/SOL005_resp.yaml#/components/responses/409 + $ref: '#/components/responses/ExternalArtifactsAccess.Put.409' 416: $ref: ../responses/SOL005_resp.yaml#/components/responses/416 422: @@ -636,17 +532,7 @@ paths: - $ref: '#/components/parameters/ArtifactPath' get: description: | - The GET method fetches the content of an artifact within the VNF snapshot package. - - If the VNF snapshot package is a result of a building process (refer to - "Build VNF snapshot package content task" resource in clause 11.4.6), and the referred - "Individual VNF snapshot package artifact" is external to the main VNF snapshot package - file, the NFVO shall return a "302 Found" response code referencing the external artifact - resource. To fetch the "Individual VNF snapshot package artifact" from URI indicated by - the "Location" header, the OSS/BSS will have to be authorized to access the resource referred - by the new URI. Furthermore, as indicated by the "302 Found" response code, the OSS/BSS will - have to use the original URI of the present "Individual VNF snapshot package artifact" resource - in future requests. + The GET method fetches the content of an artifact within the VNF snapshot package. See clause 11.4.10.3.2. parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Accept - $ref: ../components/SOL005_params.yaml#/components/parameters/Range @@ -670,9 +556,9 @@ paths: 406: $ref: ../responses/SOL005_resp.yaml#/components/responses/406 409: - $ref: ../responses/SOL005_resp.yaml#/components/responses/409 + $ref: '#/components/responses/IndividualArtifact.Get.409' 416: - $ref: ../responses/SOL005_resp.yaml#/components/responses/416 + $ref: '#/components/responses/IndividualArtifact.Get.416' 422: $ref: ../responses/SOL005_resp.yaml#/components/responses/422 429: @@ -783,12 +669,12 @@ components: $ref: ./definitions/SOL005VNFSnapshotPackageManagement_def.yaml#/definitions/CancelVnfSnapshotPkgOperationRequest required: true - VnfSnapshotPkgExtArtifactsAccessInfo: + VnfSnapshotPkgExtArtifactsAccessConfig: description: VOID content: application/json: schema: - $ref: ./definitions/SOL005VNFSnapshotPackageManagement_def.yaml#/definitions/VnfSnapshotPkgExtArtifactsAccessInfo + $ref: ./definitions/SOL005VNFSnapshotPackageManagement_def.yaml#/definitions/VnfSnapshotPkgExtArtifactsAccessConfig required: true responses: @@ -893,7 +779,7 @@ components: Shall be returned when information of the VNF snapshot package has been read successfully. - The response body shall contain the VNF snapshot package info representation defined in clause 12.5.2.3. + The response body shall contain the VNF snapshot package info representation defined in clause 11.5.2.3. headers: Version: description: The used API version. @@ -953,6 +839,43 @@ components: schema: $ref: definitions/SOL005VNFSnapshotPackageManagement_def.yaml#/definitions/VnfSnapshotPkgInfoModifications + IndividualVNFSnapshotPackage.Patch.409: + description: | + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to a conflict + with the state of the resource. + Typically, this is due to the fact that the state of the VNF snapshot package resource is in a state other + than CREATED, ERROR_EXTRACTING or AVAILABLE. + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall convey + more information about the error. + + headers: + Version: + description: The used API version. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + IndividualVNFSnapshotPackage.Delete.204: description: | 204 NO CONTENT @@ -976,6 +899,42 @@ components: schema: type: string + IndividualVNFSnapshotPackage.Delete.409: + description: | + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to a + conflict with the state of the resource. + Typically, this is due to the fact that the operational state of the VNF snapshot package resource + is other than CREATED, ERROR or AVAILABLE. + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall + convey more information about the error. + headers: + Version: + description: The used API version. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + VnfSnapshotPackageContent.Get.200: description: | 200 OK @@ -1061,6 +1020,65 @@ components: type: string format: binary + VnfSnapshotPackageContent.Get.409: + description: | + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to a + conflict with the state of the resource. + Typically, this is due to the fact the "state" of the VNF snapshot package has a value different from "AVAILABLE". + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall convey + more information about the error. + headers: + Version: + description: The used API version. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + + VnfSnapshotPackageContent.Get.416: + description: | + 416 Range Not Satisfiable + + Shall be returned upon the following error: The byte range passed in the "Range" header did not match any + available byte range in the VNF snapshot package file (e.g. "access after end of file"). + The response body may contain a ProblemDetails structure. + headers: + Version: + description: The used API version. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + + VnfSnapshotPackageContent.Put.202: description: | 202 ACCEPTED @@ -1070,7 +1088,7 @@ components: The response body shall be empty. - The API consumer can track the uploading progress by reading the status of the + The API consumer can track the uploading progress by reading the status of the "Individual VNF snapshot package" resource using the GET method. headers: Version: @@ -1088,16 +1106,52 @@ components: schema: type: string + VnfSnapshotPackageContent.Put.409: + description: | + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to a + conflict with the state of the resource. + Typically, this is due to the fact the state of the VNF snapshot package resource is other than + "CREATED" or "ERROR". + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall + convey more information about the error. + headers: + Version: + description: The used API version. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + UploadFromUri.Post.202: description: | 202 ACCEPTED - Shall be returned when the information about the VNF snapshot package has been received successfully, but + Shall be returned when the information about the VNF snapshot package has been received successfully, but the uploading has not been completed. It is expected to take some time for processing. The response body shall be empty. - The API consumer can track the uploading progress by reading the status of the + The API consumer can track the uploading progress by reading the status of the "Individual VNF snapshot package" resource using the GET method. headers: Version: @@ -1115,6 +1169,42 @@ components: schema: type: string + UploadFromUri.Post.409: + description: | + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to a + conflict with the state of the resource. + Typically, this is due to the fact the state of the VNF snapshot package resource is other than + "CREATED" or "ERROR". + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall + convey more information about the error. + headers: + Version: + description: The used API version. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + BuildVnfSnapshotPkg.Post.202: description: | 202 ACCEPTED @@ -1142,6 +1232,42 @@ components: schema: type: string + BuildVnfSnapshotPkg.Post.409: + description: | + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to a conflict + the state of the resource. + Typically, this is due to the fact the state of the VNF snapshot package resource is not "CREATED", or + he state is "AVAILABLE", or the VNF snapshot creation is not complete. + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall convey + more information about the error. + headers: + Version: + description: The used API version. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + ExtractVnfSnapshotPkg.Post.202: description: | 202 ACCEPTED @@ -1169,6 +1295,42 @@ components: schema: type: string + ExtractVnfSnapshotPkg.Post.409: + description: | + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, + due to a conflict with the state of the resource. + Typically, this is due to the fact the state of the VNF snapshot package resource is not "AVAILABLE", + or the "Individual VNF snapshot" resource is not empty, or the "Individual VNF instance" is not known to the NFVO. + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall + convey more information about the error. + headers: + Version: + description: The used API version. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + CancelVnfSnapshotPkg.Post.202: description: | 202 ACCEPTED @@ -1197,6 +1359,42 @@ components: schema: type: string + CancelVnfSnapshotPkg.Post.409: + description: | + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to + a conflict with the state of the resource. + Typically, this is due to the fact the state of the VNF snapshot package resource is other than + "UPLOADING", "BUILDING", "PROCESSING" or "EXTRACTING". + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall + convey more information about the error. + headers: + Version: + description: The used API version. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + ExternalArtifactsAccess.Get.200: description: | 200 OK @@ -1228,7 +1426,7 @@ components: content: application/json: schema: - $ref: definitions/SOL005VNFSnapshotPackageManagement_def.yaml#/definitions/VnfSnapshotPkgExtArtifactsAccessInfo + $ref: definitions/SOL005VNFSnapshotPackageManagement_def.yaml#/definitions/VnfSnapshotPkgExtArtifactsAccessConfig ExternalArtifactsAccess.Put.200: description: | @@ -1263,7 +1461,44 @@ components: content: application/json: schema: - $ref: definitions/SOL005VNFSnapshotPackageManagement_def.yaml#/definitions/VnfSnapshotPkgExtArtifactsAccessInfo + $ref: definitions/SOL005VNFSnapshotPackageManagement_def.yaml#/definitions/VnfSnapshotPkgExtArtifactsAccessConfig + + ExternalArtifactsAccess.Put.409: + description: | + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to a conflict with + the state of the resource. + Typically, this is due to the fact the "state" attribute of the "Individual VNF snapshot package" resources + contains a value different from "CREATED" or "ERROR". + + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall convey more + information about the error. + headers: + Version: + description: The used API version. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" IndividualArtifact.Get.200: description: | @@ -1382,4 +1617,69 @@ components: explode: false schema: type: string - format: url \ No newline at end of file + format: url + + IndividualArtifact.Get.409: + description: | + 409 CONFLICT + + Shall be returned upon the following error: The operation cannot be executed currently, due to a + conflict with the state of the resource. + Typically, this is due to the fact the "state" of the VNF snapshot package has a value different + from "AVAILABLE". + The response body shall contain a ProblemDetails structure, in which the "detail" attribute shall + convey more information about the error. + headers: + Version: + description: The used API version. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + + IndividualArtifact.Get.416: + description: | + 416 Range Not Satisfiable + + Shall be returned upon the following error: The byte range passed in the "Range" header did not match any + available byte range in the artifact file (e.g. "access after end of file"). + The response body may contain a ProblemDetails structure. + headers: + Version: + description: The used API version. + style: simple + explode: false + schema: + type: string + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Content-Range: + description: The Content-Range response HTTP header indicates where in a full body message a partial message belongs. + style: simple + explode: false + schema: + type: string \ No newline at end of file diff --git a/src/SOL005/VNFSnapshotPackageManagement/definitions/SOL005VNFSnapshotPackageManagement_def.yaml b/src/SOL005/VNFSnapshotPackageManagement/definitions/SOL005VNFSnapshotPackageManagement_def.yaml index 5e2dac7e2e1f019b265adace268266f0d4de1839..7bbb2efc042450b295a8ee30d136151600562f36 100644 --- a/src/SOL005/VNFSnapshotPackageManagement/definitions/SOL005VNFSnapshotPackageManagement_def.yaml +++ b/src/SOL005/VNFSnapshotPackageManagement/definitions/SOL005VNFSnapshotPackageManagement_def.yaml @@ -23,6 +23,10 @@ definitions: description: > This type represents the information of a VNF snapshot package. It shall comply with the provisions defined in table 11.5.2.3-1. + + NOTE: The attribute shall not be present before the VNF snapshot package content has been uploaded + or built. Otherwise, this attribute shall be present unless it has been requested to be excluded per + attribute selector. type: object required: - id @@ -58,18 +62,12 @@ definitions: Checksum of the stored VNF snapshot package. Hash algorithms applicable to VNF snapshot package are defined in ETSI GS NFV-SOL 010. - - The attribute shall not be present before the VNF snapshot package content has been - uploaded or built. Otherwise, this attribute shall be present unless it has been requested - to be excluded per attribute selector. + See note. $ref: "../../definitions/SOL005_def.yaml#/definitions/Checksum" createdAt: description: > Timestamp indicating when the VNF snapshot package creation has been completed. - - The attribute shall not be present before the VNF snapshot package content has been - uploaded or built. Otherwise, this attribute shall be present unless it has been requested - to be excluded per attribute selector. + See note. $ref: "../../definitions/SOL005_def.yaml#/definitions/DateTime" vnfSnapshotId: description: > @@ -85,10 +83,7 @@ definitions: Identifier of information held by the VNFM about specific VNFC snapshot(s) part of the VNF snapshot and contained in the VNF snapshot package. This identifier is allocated by the VNFM during the VNF snapshot creation. - - The attribute shall not be present before the VNF snapshot package content has been - uploaded or built. Otherwise, this attribute shall be present unless it has been requested - to be excluded per attribute selector. + See note. type: array items: $ref: "../../definitions/SOL005_def.yaml#/definitions/IdentifierLocal" @@ -100,10 +95,7 @@ definitions: vnfdInfo: description: > VNFD of the snapshotted VNF instance that is contained in the stored VNF snapshot package. - - The attribute shall not be present before the VNF snapshot package content has been - uploaded or built. Otherwise, this attribute shall be present unless it has been requested - to be excluded per attribute selector. + See note. $ref: '#/definitions/VnfdInfo' vnfsr: description: > @@ -114,10 +106,7 @@ definitions: description: > Information about VNF snapshot artifacts that are VNFC snapshot images. Every local and external snapshot image shall be included. No other artifacts shall be included. - - The attribute shall not be present before the VNF snapshot package content has been - uploaded or built. Otherwise, this attribute shall be present unless it has been requested - to be excluded per attribute selector. + See note. type: array items: $ref: '#/definitions/VnfcSnapshotImageInfo' @@ -141,6 +130,7 @@ definitions: - UPLOADING: the VNF snapshot package is being uploaded. - EXTRACTING: the VNF snapshot package’s content is being extracted. - AVAILABLE: the VNF snapshot package is available (i.e., build or upload is completed). + - PROCESSING: the VNF snapshot package is being processed. - ERROR: failure during the VNF snapshot package building, uploading or processing. - ERROR_EXTRACTING: failure during the VNF snapshot package extraction task. type: string @@ -150,6 +140,7 @@ definitions: - UPLOADING - EXTRACTING - AVAILABLE + - PROCESSING - ERROR - ERROR_EXTRACTING isCancelPending: @@ -214,6 +205,9 @@ definitions: description: > This type represents modifications to the information of a VNF snapshot package. It shall comply with the provisions defined in table 11.5.2.4-1. + NOTE: At least one of the three parameters shall be present. If the VNF snapshot + is not uploaded or built, the operation is used only to update existing or add additional + user defined data using the userDefinedData attribute. type: object anyOf: - required: @@ -226,19 +220,12 @@ definitions: name: description: > New value of the human-readable name of the VNF snapshot package. - - At least one of the three parameters shall be present. If the VNF snapshot package - is not uploaded or built, the operation is used only to update existing or add additional - user defined data using the userDefinedData attribute. + See note. type: string userDefinedData: description: > User defined data for the VNF snapshot package to be updated. - For existing keys, the value is replaced. - - At least one of the three parameters shall be present. If the VNF snapshot package - is not uploaded or built, the operation is used only to update existing or add additional - user defined data using the userDefinedData attribute. + For existing keys, the value is replaced. See note. $ref: "../../definitions/SOL005_def.yaml#/definitions/KeyValuePairs" state: description: > @@ -249,10 +236,8 @@ definitions: Explicit change of state is only permitted from the following states: - ERROR_EXTRACTING - - At least one of the three parameters shall be present. If the VNF snapshot package - is not uploaded or built, the operation is used only to update existing or add additional - user defined data using the userDefinedData attribute. + + See note. type: string enum: - AVAILABLE @@ -323,6 +308,9 @@ definitions: This type represents the request parameters for building the content of a VNF snapshot package. The NFVO can obtain the VNF snapshot data through the information provided in the request parameters. It shall comply with the provisions defined in table 11.5.2.6-1. + + NOTE: The "overrideImportForVnfcSnapshotIds" provides the list of VNFC snapshots for which the VNF + snapshot-level snapshot resource import policy is overridden. See also examples in the present clause. type: object required: - vnfSnapshotInfoId @@ -347,9 +335,7 @@ definitions: If present, it indicates the list of VNFC snapshots to which the VNF snapshot-level import snapshot resource policy indicated by the "importSnapshotResource" attribute does not apply and the opposite value shall be considered. - - The "overrideImportForVnfcSnapshotIds" provides the list of VNFC snapshots for which the - VNF snapshot-level snapshot resource import policy is overridden. See also examples in the + See note. present clause. type: array items: @@ -359,16 +345,15 @@ definitions: VNF snapshot-level policy indicating whether the NFVO shall import the snapshotted resources from the NFVI (TRUE) or keep in the NFVI the snapshotted resources as external artifacts during the building of the VNF snapshot package file (FALSE). Default value is TRUE. - - The "overrideImportForVnfcSnapshotIds" provides the list of VNFC snapshots for which the - VNF snapshot-level snapshot resource import policy is overridden. See also examples in the - present clause. + See note. $ref: "../../definitions/SOL005_def.yaml#/definitions/Boolean" ExtractVnfSnapshotPkgRequest: description: > This type represents the request parameters for extracting the content of a VNF snapshot package. It shall comply with the provisions defined in table 11.5.2.7-1. + + NOTE: Either the parameter vnfSnapshotInfoId or vnfInstanceId, but not both, shall be provided. type: object oneOf: - required: @@ -379,16 +364,14 @@ definitions: vnfSnapshotInfoId: description: > Identifier held by the NFVO about an "Individual VNF snapshot" resource managed by the VNFM - to which the content of the VNF snapshot package will be extracted to. - - Either the parameter vnfSnapshotInfoId or vnfInstanceId, but not both, shall be provided. + to which the content of the VNF snapshot package will be extracted to. + See note. $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" vnfInstanceId: description: > Identifier of the VNF instance to which the content and extraction of the VNF snapshot package is to be associated. - - Either the parameter vnfSnapshotInfoId or vnfInstanceId, but not both, shall be provided. + See note. $ref: "../../definitions/SOL005_def.yaml#/definitions/Identifier" CancelVnfSnapshotPkgOperationRequest: @@ -494,6 +477,8 @@ definitions: This type represents an artifact contained in or external to a VNF snapshot package which represents a snapshot image. It shall comply with the provisions defined in table 11.5.3.2-1. + NOTE 1: The list of permitted values was taken from "Container formats" in OpenStack®: "Disk and container formats for images". + NOTE 2: The list of permitted values was adapted from "Disk formats" in OpenStack®: "Disk and container formats for images". type: object required: - id @@ -509,7 +494,19 @@ definitions: - size properties: id: - description: Identifier of the VNFC snapshot image. + description: > + Identifier of the VNFC snapshot image. + When building the VNF snapshot package, the NFVO shall set the value of this attribute + as follows: + - for an image artifact corresponding to a compute snapshot resource, the value is copied + from the "id" attribute of the “VnfcSnapshotInfo”. + - for an image artifact corresponding to a storage snapshot resource, the value is copied + from the "storageResourceId" attribute in the "VnfcSnapshotInfo" of the corresponding + storage snapshot resource. + + When onboarding an existing VNF snapshot package, the NFVO shall set the value of this + attribute as provided in the manifest file in the VNF snapshot package (refer to ETSI + GS NFV-SOL 010). $ref: "../../definitions/SOL005_def.yaml#/definitions/IdentifierLocal" name: description: Name of the VNFC snapshot image. @@ -539,9 +536,7 @@ definitions: - OVA: OVF package in a tarfile. - OVF: OVF container format. - The list of permitted values was taken from "Container formats" in - OpenStack®: "Disk and container formats for images" - (Available from https://docs.openstack.org/glance/pike/user/formats.html) + See note 1. type: string enum: - AKI @@ -568,9 +563,7 @@ definitions: - VHDX: enhanced version of VHD format. - VMDK: a common disk image format. - The list of permitted values was adapted from "Disk formats" in - OpenStack®: "Disk and container formats for images" - (Available from https://docs.openstack.org/glance/pike/user/formats.html) + See note 2. type: string enum: - AKI diff --git a/src/SOL005/components/SOL005_params.yaml b/src/SOL005/components/SOL005_params.yaml index 707c9302047205dcc3cc77da93b942096d9f3ff0..a55f564c3c813e597eede8d5f43c8157a7c1c955 100644 --- a/src/SOL005/components/SOL005_params.yaml +++ b/src/SOL005/components/SOL005_params.yaml @@ -159,7 +159,7 @@ components: in: query description: | Flag (i.e. parameter without value) that instructs the NFVO to exclude the set of non-MANO artifacts from the - response payload body. The NFVO shall support this parameter. The VNFM may supply this parameter. + response payload body. The NFVO shall support this parameter. The OSS/BSS may supply this parameter. required: false style: form explode: true @@ -172,7 +172,7 @@ components: description: | Comma-separated list of non-MANO artifact set identifiers for which the artifacts are to be included in the response body. The NFVO should support this parameter. If the NFVO does not support this parameter, it shall - ignore it, i.e. provide a response as if no parameter was provided. The VNFM may supply this parameter. + ignore it, i.e. provide a response as if no parameter was provided. The OSS/BSS may supply this parameter. required: false style: form explode: true diff --git a/src/SOL005/definitions/SOL005_def.yaml b/src/SOL005/definitions/SOL005_def.yaml index 38e6078ed9ed10cff814825fcf451fc32eaa81ec..0b9b4409bdd563b2947063770ee16d0d2c520ea8 100644 --- a/src/SOL005/definitions/SOL005_def.yaml +++ b/src/SOL005/definitions/SOL005_def.yaml @@ -193,6 +193,7 @@ definitions: If present, match NS instances that were created based on a NSD identified by one of the nsdId values listed in this attribute. + See note 1. type: array items: $ref: "#/definitions/Identifier" @@ -202,6 +203,7 @@ definitions: instances that were created based on a VNFD identified by one of the vnfdId values listed in this attribute. + See note 1. type: array items: $ref: "#/definitions/Identifier" @@ -211,6 +213,7 @@ definitions: PNFs that are represented by a PNFD identified by one of the pnfdId values listed in this attribute. + See note 1. type: array items: $ref: "#/definitions/Identifier" @@ -218,6 +221,7 @@ definitions: description: > If present, match NS instances with an instance identifier listed in this attribute. + See note 2. type: array items: $ref: "#/definitions/Identifier" @@ -225,6 +229,7 @@ definitions: description: > If present, match NS instances with a NS Instance Name listed in this attribute. + See note 2. type: array items: $ref: "#/definitions/String" @@ -234,6 +239,9 @@ definitions: This type represents the information that allows addressing a virtualised resource that is used by a VNF instance or by an NS instance. Information about the resource is available from the VIM. + NOTE: The value set of the "vimLevelResourceType" attribute is within the scope of the VIM, + the WIM or the resource provider and can be used as information that complements the ResourceHandle. + type: object required: - resourceId @@ -262,6 +270,7 @@ definitions: The value set of the "vimLevelResourceType" attribute is within the scope of the VIM, the WIM or the resource provider and can be used as information that complements the ResourceHandle. + See note. type: string IdentifierInNs: diff --git a/src/SOL005/endpoints/SOL005_endpoints.yaml b/src/SOL005/endpoints/SOL005_endpoints.yaml index c544e8cb5c02fcb1b16ae9b3499fa93500dac98f..96788733a281bc376986a04a5a0fafded222b9c9 100644 --- a/src/SOL005/endpoints/SOL005_endpoints.yaml +++ b/src/SOL005/endpoints/SOL005_endpoints.yaml @@ -6,14 +6,13 @@ endpoints: parameters: - $ref: ../components/SOL005_params.yaml#/components/parameters/Version get: - summary: Retrieve API version information description: > The GET method reads API version information. This method shall follow the provisions specified in - table 4.6.3.3.3.2-1 for request and response data structures, and response codes. URI query parameters are not + SOL013 table 9.3.3.3.2-1 for request and response data structures, and response codes. URI query parameters are not supported. responses: "200": - $ref: '#/components/responses/ApiVersions.Get' + $ref: '#/components/responses/ApiVersions.Get.200' "400": $ref: ../responses/SOL005_resp.yaml#/components/responses/400 "401": @@ -22,8 +21,6 @@ endpoints: $ref: ../responses/SOL005_resp.yaml#/components/responses/403 "404": $ref: ../responses/SOL005_resp.yaml#/components/responses/404 - "405": - $ref: ../responses/SOL005_resp.yaml#/components/responses/405 "406": $ref: ../responses/SOL005_resp.yaml#/components/responses/406 "413": @@ -42,16 +39,44 @@ endpoints: $ref: ../responses/SOL005_resp.yaml#/components/responses/503 "504": $ref: ../responses/SOL005_resp.yaml#/components/responses/504 + post: + description: > + This method is not supported. When this method is requested on this resource, the API producer shall + return a "405 Method Not Allowed" response as defined in SOL013 clause 6.4. + responses: + 405: + $ref: ../responses/SOL005_resp.yaml#/components/responses/405 + put: + description: > + This method is not supported. When this method is requested on this resource, the API producer shall + return a "405 Method Not Allowed" response as defined in SOL013 clause 6.4. + responses: + 405: + $ref: ../responses/SOL005_resp.yaml#/components/responses/405 + patch: + description: > + This method is not supported. When this method is requested on this resource, the API producer shall + return a "405 Method Not Allowed" response as defined in SOL013 clause 6.4. + responses: + 405: + $ref: ../responses/SOL005_resp.yaml#/components/responses/405 + delete: + description: > + This method is not supported. When this method is requested on this resource, the API producer shall + return a "405 Method Not Allowed" response as defined in SOL013 clause 6.4. + responses: + 405: + $ref: ../responses/SOL005_resp.yaml#/components/responses/405 components: responses: - ApiVersions.Get: + ApiVersions.Get.200: description: > 200 OK API version information was read successfully. - The response body shall contain 4.4 API version - information, as defined in clause 4.4.1.13. + The response body shall contain API version + information, as defined in SOL013 clause 7.1.6. headers: Content-Type: description: The MIME type of the body of the response. diff --git a/src/SOL005/responses/SOL005_resp.yaml b/src/SOL005/responses/SOL005_resp.yaml index 6bbb21ec20731cfdf19dd1a3c2ca9ce64e186bd1..d9047a1c550bb44286bb51668a655cf222c09f94 100644 --- a/src/SOL005/responses/SOL005_resp.yaml +++ b/src/SOL005/responses/SOL005_resp.yaml @@ -301,6 +301,8 @@ components: application/json: schema: $ref: "../definitions/SOL005_def.yaml#/definitions/ProblemDetails" + maximum: 1 + minimum: 0 406: description: >