diff --git a/Readme.md b/Readme.md index 1f94e8ad04d166b369b578af5377ee6b185c5b85..6379485e9824bd13b76e99bf41cb84fa7937d2b0 100644 --- a/Readme.md +++ b/Readme.md @@ -1,14 +1,14 @@ # NFV SOL002 and SOL003 APIs This repository hosts the [OpenAPI](https://www.openapis.org/) specificatons and other documentation -for the APIs defined in ETSI NFV GSs SOL002 and SOL003 v3.3.1. +for the APIs defined in ETSI NFV GSs SOL002 and SOL003 v3.5.1. The APIs described in this repository are defined for the following reference points: * `Or-Vnfm` * `Ve-vnfm` -**IMPORTANT: In case of discrepancies the published ETSI Group Specification takes precedence.** +**IMPORTANT: These [OpenAPI](https://www.openapis.org/) specifications are in development phase. In case of discrepancies the published ETSI Group Specification takes precedence.** More information at [NFV Solutions wiki](https://nfvwiki.etsi.org/index.php?title=NFV_Solutions). diff --git a/src/SOL002/APIVersion/APIVersion.yaml b/src/SOL002/APIVersion/APIVersion.yaml index dee16ad390a3d5b3619ce22a33144aba50b0d2f3..6da2dab93b438c988fc8c7622d9ef360d3bc3425 100644 --- a/src/SOL002/APIVersion/APIVersion.yaml +++ b/src/SOL002/APIVersion/APIVersion.yaml @@ -3,20 +3,24 @@ openapi: 3.0.2 info: title: SOL002 - API version interface description: | - SOL002 - 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. + SOL002 - 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 https://forge.etsi.org/rep/nfv/SOL002-SOL003/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.3.0-impl:etsi.org:ETSI_NFV_OpenAPI:1 externalDocs: - description: ETSI GS NFV-SOL 002 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/03.03.01_60/gs_NFV-SOL002v030301p.pdf + description: ETSI GS NFV-SOL 002 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/03.05.01_60/gs_NFV-SOL002v030501p.pdf paths: /vnfconfig/api_versions: @@ -28,4 +32,6 @@ paths: /vnflcm/api_versions: $ref: ../../endpoints/SOL002SOL003_endpoints.yaml#/endpoints/api-versions /vnfpm/api_versions: + $ref: ../../endpoints/SOL002SOL003_endpoints.yaml#/endpoints/api-versions + /lcmcoord/api_versions: $ref: ../../endpoints/SOL002SOL003_endpoints.yaml#/endpoints/api-versions \ No newline at end of file diff --git a/src/SOL002/VNFConfiguration/VNFConfiguration.yaml b/src/SOL002/VNFConfiguration/VNFConfiguration.yaml index 84f7196ecde1f26abb21840218c1a367e04fb326..145af239c9776ae5986882385ae4572d77f0b8e9 100644 --- a/src/SOL002/VNFConfiguration/VNFConfiguration.yaml +++ b/src/SOL002/VNFConfiguration/VNFConfiguration.yaml @@ -3,10 +3,14 @@ openapi: 3.0.2 info: title: SOL002 - VNF Configuration interface description: | - SOL002 - VNF Configuration 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 + SOL002 - VNF Configuration 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/SOL002-SOL003/issues + contact: name: NFV-SOL WG license: @@ -15,8 +19,8 @@ info: version: 1.2.0-impl:etsi.org:ETSI_NFV_OpenAPI:1 externalDocs: - description: ETSI GS NFV-SOL 002 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/03.03.01_60/gs_NFV-SOL002v030301p.pdf + description: ETSI GS NFV-SOL 002 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/03.05.01_60/gs_NFV-SOL002v030501p.pdf servers: - url: http://127.0.0.1/vnfconfig/v1 @@ -31,12 +35,12 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization get: - summary: Read VNF/VNFC configuration from VNF description: | - The client can use this method to read configuration information about a VNF instance and/or its VNFC instances. + The API consumer can use this method to read configuration information about a VNF instance and/or its VNFC instances. + See clause 9.4.2.3.2. responses: "200": - $ref: '#/components/responses/Configuration.Get' + $ref: '#/components/responses/Configuration.Get.200' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -61,13 +65,13 @@ paths: $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/504 patch: - summary: Modify VNF/VNFC configuration. - description: This method sets or modifies a configuration resource. + description: | + This method sets or modifies a configuration resource. See clause 9.4.2.3.4. requestBody: $ref: '#/components/requestBodies/ConfigurationRequest' responses: "200": - $ref: '#/components/responses/Configuration.Patch' + $ref: '#/components/responses/Configuration.Patch.200' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -107,7 +111,7 @@ components: required: true responses: - Configuration.Get: + Configuration.Get.200: description: | 200 OK Shall be returned when configuration information about a VNF instance has been read successfully. The response @@ -138,7 +142,7 @@ components: schema: $ref: ./definitions/SOL002VNFConfiguration_def.yaml#/definitions/VnfConfiguration - Configuration.Patch: + Configuration.Patch.200: description: | 200 OK Shall be returned when the request has been accepted and completed. The response body shall contain the diff --git a/src/SOL002/VNFConfiguration/definitions/SOL002VNFConfiguration_def.yaml b/src/SOL002/VNFConfiguration/definitions/SOL002VNFConfiguration_def.yaml index d56c1edc32ee02e3ef33ca1348a2d21b33901af5..2eb1cddec13147d252d3b6da1ee24b71df12391b 100644 --- a/src/SOL002/VNFConfiguration/definitions/SOL002VNFConfiguration_def.yaml +++ b/src/SOL002/VNFConfiguration/definitions/SOL002VNFConfiguration_def.yaml @@ -76,6 +76,8 @@ definitions: VnfConfigurationData: description: > This type represents configuration parameters of a VNF instance. + * NOTE: ETSI GS NFV-SOL 001 specifies the structure and format of + the VNFD based on TOSCA specifications. type: object properties: extCpConfig: @@ -92,12 +94,14 @@ definitions: vnfSpecificData: description: > Additional configurable properties of the VNF instance declared in the - VNFD as "VnfConfigurableProperties". + VNFD as "VnfConfigurableProperties". see note. $ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/KeyValuePairs' VnfcConfigurationData: description: > This type represents configuration parameters of a VNFC instance. + * NOTE: ETSI GS NFV-SOL 001 specifies the structure and format + of the VNFD based on TOSCA specifications. type: object required: - vnfcInstanceId @@ -121,7 +125,7 @@ definitions: vnfcSpecificData: description: > Additional configurable properties of the VNFC instance declared in the - VNFD as "VnfcConfigurableProperties". + VNFD as "VnfcConfigurableProperties". See note. $ref: '../../../definitions/SOL002SOL003_def.yaml#/definitions/KeyValuePairs' CpConfiguration: diff --git a/src/SOL002/VNFFaultManagement/VNFFaultManagement.yaml b/src/SOL002/VNFFaultManagement/VNFFaultManagement.yaml index 0dd76c0f03a29e69f1367189c74869e6f6b7dfd4..381d753b70463e0a4e862c9dd9142c26b9413136 100644 --- a/src/SOL002/VNFFaultManagement/VNFFaultManagement.yaml +++ b/src/SOL002/VNFFaultManagement/VNFFaultManagement.yaml @@ -3,10 +3,14 @@ openapi: 3.0.2 info: title: SOL002 - VNF Fault Management interface description: | - SOL002 - VNF 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. + SOL002 - VNF Fault Management interface + + IMPORTANT: Please note that this file might be not aligned to the current + version of the ETSI Group Specification it refers to. In case of + discrepancies the published ETSI Group Specification takes precedence. + Please report bugs to https://forge.etsi.org/rep/nfv/SOL002-SOL003/issues + contact: name: NFV-SOL WG license: @@ -15,8 +19,8 @@ info: version: 1.3.0-impl:etsi.org:ETSI_NFV_OpenAPI:1 externalDocs: - description: ETSI GS NFV-SOL 002 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/03.03.01_60/gs_NFV-SOL002v030301p.pdf + description: ETSI GS NFV-SOL 002 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/03.05.01_60/gs_NFV-SOL002v030501p.pdf servers: - url: http://127.0.0.1/vnffm/v1 @@ -32,7 +36,7 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization get: description: | - The client can use this method to retrieve information about the alarm list. + The API consumer can use this method to retrieve information about the alarm list. See clause 7.4.2.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType @@ -40,7 +44,7 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/nextpage_opaque_marker responses: "200": - $ref: '#/components/responses/Alarms.Get' + $ref: '#/components/responses/Alarms.Get.200' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -73,13 +77,13 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization get: description: | - The client can use this method to read an individual alarm. + The API consumer can use this method to read an individual alarm. See clause 7.4.3.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType responses: "200": - $ref: '#/components/responses/IndividualAlarm.Get' + $ref: '#/components/responses/IndividualAlarm.Get.200' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -107,7 +111,7 @@ paths: patch: description: | - This method modifies an individual alarm resource. + This method modifies an individual alarm resource. See clause 7.4.3.3.4. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType @@ -115,7 +119,9 @@ paths: $ref: '#/components/requestBodies/IndividualAlarmRequest' responses: "200": - $ref: '#/components/responses/IndividualAlarm.Patch' + $ref: '#/components/responses/IndividualAlarm.Patch.200' + "409": + $ref: '#/components/responses/IndividualAlarm.Patch.409' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -128,8 +134,6 @@ paths: $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405 "406": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406 - "409": - $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/409 "412": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/412 "416": @@ -152,14 +156,13 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization post: description: | - The POST method enables the consumer to escalate the perceived severity of an alarm that is represented by an - individual alarm resource. As the result of successfully executing this method, a new "Individual subscription" - resource as defined in clause 7.4.5 shall have been created. This method shall not trigger any notification. + The POST method enables the API consumer to escalate the perceived severity of an alarm that is represented + by an individual alarm resource. See clause 7.4.4.3.1. requestBody: $ref: '#/components/requestBodies/IndividualAlarmEscalateRequest' responses: - "200": - $ref: '#/components/responses/IndividualAlarmEscalate.Post' + "204": + $ref: '#/components/responses/IndividualAlarmEscalate.Post.204' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -191,8 +194,8 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization get: description: | - The client can use this method to retrieve the list of active subscriptions for VNF alarms subscribed by the - client. It can be used e.g. for resynchronization after error situations. + The API consumer can use this method to retrieve the list of active subscriptions for VNF alarms subscribed + by the API consumer. It can be used e.g. for resynchronization after error situations. See clause 7.4.5.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType @@ -200,7 +203,7 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/nextpage_opaque_marker responses: "200": - $ref: '#/components/responses/Subscriptions.Get' + $ref: '#/components/responses/Subscriptions.Get.200' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -228,7 +231,7 @@ paths: post: description: | - The POST method creates a new subscription. + The POST method creates a new subscription. See clause 7.4.5.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType @@ -236,7 +239,7 @@ paths: $ref: '#/components/requestBodies/FmSubscriptionRequest' responses: "201": - $ref: '#/components/responses/Subscriptions.Post' + $ref: '#/components/responses/Subscriptions.Post.201' "303": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/303 "400": @@ -271,13 +274,14 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization get: description: | - The client can use this method for reading an individual subscription for VNF alarms subscribed by the client. + The API consumer can use this method for reading an individual subscription for VNF alarms subscribed + by the API consumer. See clause 7.4.6.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType responses: "200": - $ref: '#/components/responses/IndividualSubscription.Get' + $ref: '#/components/responses/IndividualSubscription.Get.200' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -305,16 +309,10 @@ paths: delete: description: | - 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 7.4.6.3.5. responses: "204": - $ref: '#/components/responses/IndividualSubscription.Delete' + $ref: '#/components/responses/IndividualSubscription.Delete.204' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -394,7 +392,7 @@ components: required: true responses: - Alarms.Get: + Alarms.Get.200: description: | 200 OK Shall be returned when information about zero or more alarms was queried successfully. The response body shall @@ -436,7 +434,7 @@ components: schema: $ref: ./definitions/SOL002VNFFaultManagement_def.yaml#/definitions/Alarm - IndividualAlarm.Get: + IndividualAlarm.Get.200: description: | 200 OK Shall be returned when information about an individual alarm read successfully. The response body shall contain @@ -467,7 +465,7 @@ components: schema: $ref: ./definitions/SOL002VNFFaultManagement_def.yaml#/definitions/Alarm - IndividualAlarm.Patch: + IndividualAlarm.Patch.200: description: | 200 OK Shall be returned when the request was accepted and completed. The response body shall contain attribute @@ -498,7 +496,49 @@ components: schema: $ref: ../../definitions/SOL002SOL003VNFFaultManagement_def.yaml#/definitions/AlarmModifications - IndividualAlarmEscalate.Post: + 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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + IndividualAlarmEscalate.Post.204: description: | 204 No Content Shall be returned when the VNFM has received the proposed "escalated perceived severity" value successfully. @@ -512,7 +552,7 @@ components: type: string content: {} - Subscriptions.Get: + Subscriptions.Get.200: description: | 200 OK Shall be returned when the list of subscriptions has been queried successfully. @@ -555,7 +595,7 @@ components: schema: $ref: ../../definitions/SOL002SOL003VNFFaultManagement_def.yaml#/definitions/FmSubscription - Subscriptions.Post: + Subscriptions.Post.201: description: | 201 CREATED The subscription was created successfully. The response body shall contain a representation of the created @@ -595,10 +635,11 @@ components: schema: $ref: ../../definitions/SOL002SOL003VNFFaultManagement_def.yaml#/definitions/FmSubscription - IndividualSubscription.Get: + IndividualSubscription.Get.200: description: | 200 OK - Shall be returned when information about an individual subscription has been read successfully. The response body shall contain a representation of the "Individual subscription" resource. + Shall be returned when information about an individual subscription has been read successfully. + The response body shall contain a representation of the "Individual subscription" resource. headers: Version: description: The used API version. @@ -608,7 +649,8 @@ components: 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. + 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: @@ -624,7 +666,7 @@ components: schema: $ref: ../../definitions/SOL002SOL003VNFFaultManagement_def.yaml#/definitions/FmSubscription - IndividualSubscription.Delete: + IndividualSubscription.Delete.204: description: | 204 NO CONTENT Shall be returned when the "Individual subscription" resource has been deleted successfully. diff --git a/src/SOL002/VNFFaultManagement/definitions/SOL002VNFFaultManagement_def.yaml b/src/SOL002/VNFFaultManagement/definitions/SOL002VNFFaultManagement_def.yaml index 285540b21537937754514defcc66a94b26b8a950..65a2a4b2d1b8cd749b8caa4159007cb1a9c27eb3 100644 --- a/src/SOL002/VNFFaultManagement/definitions/SOL002VNFFaultManagement_def.yaml +++ b/src/SOL002/VNFFaultManagement/definitions/SOL002VNFFaultManagement_def.yaml @@ -28,9 +28,9 @@ definitions: $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" vnfcInstanceIds: description: > - Identifiers of the affected VNFC instances. - Each identifier references the "id" attribute in a "VnfcInfo" structure. - Shall be present if the alarm affects at least one VNFC instance. + Identifiers of the affected VNFC instances. Each identifier references the + "id" attribute in a "VnfcInfo" structure. Shall be present if the alarm affects + at least one VNFC instance. type: array items: $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/IdentifierInVnf" diff --git a/src/SOL002/VNFFaultManagementNotification/VNFFaultManagementNotification.yaml b/src/SOL002/VNFFaultManagementNotification/VNFFaultManagementNotification.yaml index f2f3ff62e8986eaec6182215f519810f07887c5c..65f926df305bf8c7e9d1e943d1d2e571c5ca5bc6 100644 --- a/src/SOL002/VNFFaultManagementNotification/VNFFaultManagementNotification.yaml +++ b/src/SOL002/VNFFaultManagementNotification/VNFFaultManagementNotification.yaml @@ -3,10 +3,14 @@ openapi: 3.0.2 info: title: SOL002 - VNF Fault Management Notification interface description: | - SOL002 - VNF 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 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 + SOL002 - VNF 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. + https://forge.etsi.org/rep/nfv/SOL002-SOL003/issues + contact: name: NFV-SOL WG license: @@ -15,25 +19,25 @@ info: version: 1.3.0-impl:etsi.org:ETSI_NFV_OpenAPI:1 externalDocs: - description: ETSI GS NFV-SOL 002 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/03.03.01_60/gs_NFV-SOL002v030301p.pdf + description: ETSI GS NFV-SOL 002 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/03.05.01_60/gs_NFV-SOL002v030501p.pdf servers: - url: http://127.0.0.1/callback/v1 - url: https://127.0.0.1/callback/v1 paths: - /URI-is-provided-by-the-client-when-creating-the-subscription_AlarmNotification: + /URI_is_provided_by_the_client_when_creating_the_subscription-AlarmNotification: parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization get: 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 7.4.7.3.2. responses: "204": - $ref: '#/components/responses/VNFFMNotification.Get' + $ref: '#/components/responses/VNFFMNotification.Get.204' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -51,16 +55,15 @@ paths: post: description: | - Notify The POST method notifies a VNF alarm or that the alarm list has been rebuilt. The API consumer shall have - previously created an "Individual subscription" resource with a matching filter. + previously created an "Individual subscription" resource with a matching filter. See clause 7.4.7.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType requestBody: $ref: '#/components/requestBodies/AlarmNotification' responses: "204": - $ref: '#/components/responses/VNFFMNotification.Post' + $ref: '#/components/responses/VNFFMNotification.Post.204' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -76,17 +79,17 @@ paths: "503": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503 - /URI-is-provided-by-the-client-when-creating-the-subscription_AlarmClearedNotification: + /URI_is_provided_by_the_client_when_creating_the_subscription-AlarmClearedNotification: parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization get: 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 7.4.7.3.2. responses: "204": - $ref: '#/components/responses/VNFFMNotification.Get' + $ref: '#/components/responses/VNFFMNotification.Get.204' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -104,16 +107,15 @@ paths: post: description: | - Notify The POST method notifies a VNF alarm or that the alarm list has been rebuilt. The API consumer shall have - previously created an "Individual subscription" resource with a matching filter. + previously created an "Individual subscription" resource with a matching filter. See clause 7.4.7.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType requestBody: $ref: '#/components/requestBodies/AlarmClearedNotification' responses: "204": - $ref: '#/components/responses/VNFFMNotification.Post' + $ref: '#/components/responses/VNFFMNotification.Post.204' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -129,17 +131,17 @@ paths: "503": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503 - /URI-is-provided-by-the-client-when-creating-the-subscription_AlarmListRebuiltNotification: + /URI_is_provided_by_the_client_when_creating_the_subscription-AlarmListRebuiltNotification: parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization get: 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 7.4.7.3.2. responses: "204": - $ref: '#/components/responses/VNFFMNotification.Get' + $ref: '#/components/responses/VNFFMNotification.Get.204' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -157,16 +159,15 @@ paths: post: description: | - Notify The POST method notifies a VNF alarm or that the alarm list has been rebuilt. The API consumer shall have - previously created an "Individual subscription" resource with a matching filter. + previously created an "Individual subscription" resource with a matching filter. See clause 7.4.7.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType requestBody: $ref: '#/components/requestBodies/AlarmListRebuiltNotification' responses: "204": - $ref: '#/components/responses/VNFFMNotification.Post' + $ref: '#/components/responses/VNFFMNotification.Post.204' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -212,9 +213,9 @@ components: required: true responses: - VNFFMNotification.Get: + VNFFMNotification.Get.204: description: | - 201 NO CONTENT + 204 NO CONTENT Shall be returned to indicate the notification endpoint has been tested successfully. The response body shall be empty. headers: @@ -235,7 +236,7 @@ components: type: string content: {} - VNFFMNotification.Post: + VNFFMNotification.Post.204: description: | 204 NO CONTENT Shall be returned when the notification has been delivered successfully. The response body shall be empty. diff --git a/src/SOL002/VNFIndicator/VNFIndicator.yaml b/src/SOL002/VNFIndicator/VNFIndicator.yaml index 84ac22e513fc9224d1a7be410c7641ae26a81daf..0c2eee1d0707e369a882f28e237dc7a451534390 100644 --- a/src/SOL002/VNFIndicator/VNFIndicator.yaml +++ b/src/SOL002/VNFIndicator/VNFIndicator.yaml @@ -5,11 +5,12 @@ info: description: | SOL002 - VNF Indicator 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/SOL002-SOL003/issues + contact: name: NFV-SOL WG license: @@ -18,8 +19,8 @@ info: version: 1.3.0-impl:etsi.org:ETSI_NFV_OpenAPI:1 externalDocs: - description: ETSI GS NFV-SOL 002 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/03.03.01_60/gs_NFV-SOL002v030301p.pdf + description: ETSI GS NFV-SOL 002 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/03.05.01_60/gs_NFV-SOL002v030501p.pdf servers: - url: http://127.0.0.1/vnfind/v1 @@ -34,15 +35,14 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization get: - summary: Query multiple indicators - description: Get a list of indicators. Support of attribute based filtering - via query parameters. + description: | + The GET method queries multiple VNF indicators. See clause 8.4.2.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/filter - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/nextpage_opaque_marker responses: "200": - $ref: '#/components/responses/Indicators.Get' + $ref: '#/components/responses/Indicators.Get.200' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -74,16 +74,14 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization get: - summary: Query multiple indicators related to a VNF instance. description: | - Get a list of indicators related to a specific VNF instance. Support of attribute based filtering via query - parameters. + The GET method queries multiple VNF indicators related to a VNF instance. See clause 8.4.3.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/filter - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/nextpage_opaque_marker responses: "200": - $ref: '#/components/responses/VnfIndicators.Get' + $ref: '#/components/responses/VnfIndicators.Get.200' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -116,14 +114,11 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization get: - summary: Read an inidividual VNF indicator related to a VNF instance. description: | - Read an individual VNF indicator related to a specific VNF instance. NOTE: This identifier can be retrieved - from the resource referenced by the "Location" HTTP header in the response to a POST request creating a new VNF - instance resource. It can also be retrieved from the "id" attribute in the payload body of that response. + The GET method reads a VNF indicator. See clause 8.4.4.3.2. responses: "200": - $ref: '#/components/responses/VnfIndividualIndicator.Get' + $ref: '#/components/responses/VnfIndividualIndicator.Get.200' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -154,16 +149,15 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization get: - summary: Query multiple subscriptions. description: | - Service Unavailable - 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 8.4.5.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/filter - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/nextpage_opaque_marker responses: "200": - $ref: '#/components/responses/VnfIndicatorSubscriptions.Get' + $ref: '#/components/responses/VnfIndicatorSubscriptions.Get.200' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -190,19 +184,8 @@ paths: $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/504 post: - summary: Create a new subscription to VNF indicator change notifications description: | - This method creates a new subscription. As the result of successfully executing this method, a new "Individual - subscription" resource as defined in clause 8.4.6 shall have been created. This method shall not trigger any - notification. Creation of two "Individual subscription" resources with the same callbackURI and the same filter - can result in performance degradation and will provide duplicates of notifications to the VNFM, and might make - sense only in very rare use cases. Consequently, the API producer may either allow creating a new "Individual - subscription" resource if another "Individual subscription" resource with the same filter and callbackUri already - exists (in which case it shall return the "201 Created" response code), or may decide to not create a duplicate - "Individual subscription" resource (in which case it shall return a "303 See Other" response code referencing - the existing "Individual subscription" resource with the same filter and callbackUri). This method shall follow - the provisions specified in the tables 8.4.5.3.1-1 and 8.4.5.3.1-2 for URI query parameters, request and response - data structures, and response codes + The POST method creates a new subscription. See clause 8.4.5.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType @@ -210,7 +193,7 @@ paths: $ref: '#/components/requestBodies/VnfIndicatorSubscriptionRequest' responses: "201": - $ref: '#/components/responses/VnfIndicatorSubscription.Post' + $ref: '#/components/responses/VnfIndicatorSubscription.Post.201' "303": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/303 "400": @@ -244,13 +227,11 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization get: - summary: Read an individual subscription. description: | - Service Unavailable - This resource represents an individual subscription. The client can use this resource to read and to terminate a subscription to notifications related to VNF indicator value changes. + The GET method reads an individual subscription. See clause 8.4.6.3.2. responses: "200": - $ref: '#/components/responses/VnfIndicatorSubscription.Get' + $ref: '#/components/responses/VnfIndicatorSubscription.Get.200' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -277,18 +258,11 @@ paths: $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/504 delete: - summary: Delete a subscription description: | - 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:\tDue to race conditions, some notifications might still be received - by the formerly-subscribed API consumer for a certain time period after - the deletion. + The DELETE method terminates an individual subscription. See clause 8.4.6.3.5. responses: "204": - $ref: '#/components/responses/VnfIndicatorSubscription.Delete' + $ref: '#/components/responses/VnfIndicatorSubscription.Delete.204' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -366,7 +340,7 @@ components: required: true responses: - Indicators.Get: + Indicators.Get.200: description: | 200 OK Shall be returned when information about zero or more VNF indicators was queried successfully. @@ -404,7 +378,7 @@ components: items: $ref: ../../definitions/SOL002SOL003VNFIndicator_def.yaml#/definitions/VnfIndicator - VnfIndicators.Get: + VnfIndicators.Get.200: description: | 200 OK Shall be returned when information about zero or more VNF indicators was queried successfully. @@ -442,7 +416,7 @@ components: items: $ref: ../../definitions/SOL002SOL003VNFIndicator_def.yaml#/definitions/VnfIndicator - VnfIndividualIndicator.Get: + VnfIndividualIndicator.Get.200: description: | 200 OK Shall be returned when the VNF indicator has been read successfully. The response body shall contain the @@ -465,7 +439,7 @@ components: schema: $ref: ../../definitions/SOL002SOL003VNFIndicator_def.yaml#/definitions/VnfIndicator - VnfIndicatorSubscriptions.Get: + VnfIndicatorSubscriptions.Get.200: description: | 200 OK Shall be returned when the list of subscriptions was queried successfully. @@ -503,7 +477,7 @@ components: items: $ref: ../../definitions/SOL002SOL003VNFIndicator_def.yaml#/definitions/VnfIndicatorSubscription - VnfIndicatorSubscription.Post: + VnfIndicatorSubscription.Post.201: description: | 201 CREATED Shall be returned when the subscription has been created successfully. The response body shall contain a @@ -544,10 +518,11 @@ components: items: $ref: ../../definitions/SOL002SOL003VNFIndicator_def.yaml#/definitions/VnfIndicatorSubscription - VnfIndicatorSubscription.Get: + VnfIndicatorSubscription.Get.200: description: | 200 OK - Shall be returned when information about an individual subscription has been read successfully. The response body shall contain the representation of the "Individual subscription" resource. + Shall be returned when information about an individual subscription has been read successfully. + The response body shall contain the representation of the "Individual subscription" resource. headers: Version: description: The used API version. @@ -566,7 +541,7 @@ components: schema: $ref: ../../definitions/SOL002SOL003VNFIndicator_def.yaml#/definitions/VnfIndicatorSubscription - VnfIndicatorSubscription.Delete: + VnfIndicatorSubscription.Delete.204: description: | 204 NO CONTENT Shall be returned when the subscription has been deleted successfully. The response body shall be empty. diff --git a/src/SOL002/VNFIndicatorNotification/VNFIndicatorNotification.yaml b/src/SOL002/VNFIndicatorNotification/VNFIndicatorNotification.yaml index 4e8aa6bc810c7588b349a77d4944334f280f1b8f..753a99eb0fd1da8d0c0080e56021fd2c40087935 100644 --- a/src/SOL002/VNFIndicatorNotification/VNFIndicatorNotification.yaml +++ b/src/SOL002/VNFIndicatorNotification/VNFIndicatorNotification.yaml @@ -5,11 +5,12 @@ info: description: | SOL002 - VNF Indicator Notification 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/SOL002-SOL003/issues + contact: name: NFV-SOL WG license: @@ -18,27 +19,25 @@ info: version: 1.3.0-impl:etsi.org:ETSI_NFV_OpenAPI:1 externalDocs: - description: ETSI GS NFV-SOL 002 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/03.03.01_60/gs_NFV-SOL002v030301p.pdf + description: ETSI GS NFV-SOL 002 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/03.05.01_60/gs_NFV-SOL002v030501p.pdf servers: - url: http://127.0.0.1/callback/v1 - url: https://127.0.0.1/callback/v1 paths: - '/URI-is-provided-by-the-client-when-creating-the-subscription_VnfIndicatorValueChangeNotification': + '/URI_is_provided_by_the_client_when_creating_the_subscription-VnfIndicatorValueChangeNotification': parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization get: - summary: Test notification endpoint. description: | - Service Unavailable - 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.7.3.2. responses: "204": - $ref: '#/components/responses/VNFInNotification.Get' + $ref: '#/components/responses/VNFInNotification.Get.204' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -55,19 +54,16 @@ paths: $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503 post: - summary: Notification endpoint description: | - The API producer can use this resource to send notifications related to VNF indicator value changes to a - subscribed API consumer, which has provided the URI of this resource during the subscription process. - The POST method delivers a notification from 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 8.4.7.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType requestBody: $ref: '#/components/requestBodies/VnfIndicatorValueChangeNotification' responses: "204": - $ref: '#/components/responses/VNFInNotification.Post' + $ref: '#/components/responses/VNFInNotification.Post.204' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -83,19 +79,17 @@ paths: "503": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503 - '/URI-is-provided-by-the-client-when-creating-the-subscription_SupportedIndicatorsChangeNotification': + '/URI_is_provided_by_the_client_when_creating_the_subscription-SupportedIndicatorsChangeNotification': parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization get: - summary: Test notification endpoint. description: | - Service Unavailable - 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.7.3.2. responses: "204": - $ref: '#/components/responses/VNFInNotification.Get' + $ref: '#/components/responses/VNFInNotification.Get.204' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -112,19 +106,16 @@ paths: $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503 post: - summary: Notification endpoint description: | - The API producer can use this resource to send notifications related to VNF indicator value changes to a - subscribed API consumer, which has provided the URI of this resource during the subscription process. - The POST method delivers a notification from 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 8.4.7.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType requestBody: $ref: '#/components/requestBodies/SupportedIndicatorsChangeNotification' responses: "204": - $ref: '#/components/responses/VNFInNotification.Post' + $ref: '#/components/responses/VNFInNotification.Post.204' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -161,9 +152,9 @@ components: required: true responses: - VNFInNotification.Get: + VNFInNotification.Get.204: description: | - 201 NO CONTENT + 204 NO CONTENT Shall be returned to indicate the notification endpoint has been tested successfully. The response body shall be empty. headers: @@ -184,7 +175,7 @@ components: type: string content: {} - VNFInNotification.Post: + VNFInNotification.Post.204: description: | 204 NO CONTENT Shall be returned when the notification has been delivered successfully. The response body shall be empty. diff --git a/src/SOL002/VNFIndicatorNotification/definitions/SOL002VNFIndicatorNotification_def.yaml b/src/SOL002/VNFIndicatorNotification/definitions/SOL002VNFIndicatorNotification_def.yaml index 8b90980c0c2cba45f578a5db17f95698388d2cdc..bc95b94fc0979b4773d4a4864afff80276a337b6 100644 --- a/src/SOL002/VNFIndicatorNotification/definitions/SOL002VNFIndicatorNotification_def.yaml +++ b/src/SOL002/VNFIndicatorNotification/definitions/SOL002VNFIndicatorNotification_def.yaml @@ -5,6 +5,8 @@ definitions: VnfIndicatorValueChangeNotification: description: > This type represents a VNF indicator value change notification. + * NOTE: ETSI GS NFV-SOL 001 specifies the structure and + format of the VNFD based on TOSCA specifications. type: object required: - id @@ -45,7 +47,8 @@ definitions: type: string value: description: > - Provides the value of the VNF indicator. The value format is defined in the VNFD. + Provides the value of the VNF indicator. The value format is defined in the VNFD. + See note. type: object vnfInstanceId: description: > @@ -71,8 +74,10 @@ definitions: SupportedIndicatorsChangeNotification: description: | - This type represents a notification to inform the receiver that the set of indicators supported by a VNF instance - has changed. + This type represents a notification to inform the receiver that the set of indicators + supported by a VNF instance has changed. + * NOTE: ETSI GS NFV-SOL 001 specifies the structure and + format of the VNFD based on TOSCA specifications. type: object required: - id @@ -120,7 +125,7 @@ definitions: name: description: | Human readable name of the VNF indicator. Shall be present if defined in the VNFD. - ETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. + See note. type: string _links: description: | diff --git a/src/SOL002/VNFLifecycleCoordination/VNFLifecycleCoordination.yaml b/src/SOL002/VNFLifecycleCoordination/VNFLifecycleCoordination.yaml new file mode 100644 index 0000000000000000000000000000000000000000..171032a855906c12cb3e1e2f36473647895ef75f --- /dev/null +++ b/src/SOL002/VNFLifecycleCoordination/VNFLifecycleCoordination.yaml @@ -0,0 +1,539 @@ +openapi: 3.0.2 + +info: + title: SOL002 - VNF LCM Coordination interface + description: | + SOL002 - VNF Lifecycle 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/SOL002-SOL003/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 002 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/03.05.01_60/gs_NFV-SOL002v030501p.pdf + +servers: + - url: http://127.0.0.1/lcmcoord/v1 + - url: https://127.0.0.1/lcmcoord/v1 + +paths: + /api_versions: + $ref: '../../endpoints/SOL002SOL003_endpoints.yaml#/endpoints/api-versions' + + /coordinations: + parameters: + - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version + - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization + post: + description: | + This POST method requests the coordination of an LCM operation occurrence with + a management operation executed in the API producer. See clause 10.4.2.3.1. + parameters: + - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept + - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType + requestBody: + $ref: '#/components/requestBodies/LcmCoordRequest' + responses: + "201": + $ref: '#/components/responses/Coordination.Post.201' + "202": + $ref: '#/components/responses/Coordination_async.Post.202' + "403": + $ref: '#/components/responses/Coordination.Post.403' + "409": + $ref: '#/components/responses/Coordination.Post.409' + "503": + $ref: '#/components/responses/Coordination.Post.503' + "400": + $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 + "401": + $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/401 + "404": + $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/404 + "405": + $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405 + "406": + $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406 + "422": + $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/422 + "429": + $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/429 + "500": + $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/500 + "504": + $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/504 + + /coordinations/{coordinationId}: + parameters: + - $ref: '#/components/parameters/coordinationId' + - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version + - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization + get: + description: | + The GET method reads a coordination result. See clause 10.4.3.3.2. + responses: + "200": + $ref: '#/components/responses/LcmCoord.Get.200' + "202": + $ref: '#/components/responses/LcmCoord.Get.202' + "400": + $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 + "401": + $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/401 + "403": + $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/403 + "404": + $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/404 + "405": + $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405 + "406": + $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406 + "416": + $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416 + "422": + $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/422 + "429": + $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/429 + "500": + $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/500 + "503": + $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503 + "504": + $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/504 + + /coordinations/{coordinationId}/cancel: + parameters: + - $ref: '#/components/parameters/coordinationId' + - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version + - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization + post: + description: | + The POST method initiates the cancellation of an ongoing coordination action. + See clause 10.4.4.3.1. + responses: + "202": + $ref: '#/components/responses/CoordinationCancel.Post.202' + "409": + $ref: '#/components/responses/CoordinationCancel.Post.409' + "400": + $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 + "401": + $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/401 + "403": + $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/403 + "404": + $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/404 + "405": + $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405 + "406": + $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406 + "416": + $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416 + "422": + $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/422 + "429": + $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/429 + "500": + $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/500 + "503": + $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503 + "504": + $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/504 + +components: + parameters: + coordinationId: + name: coordinationId + in: path + description: | + Identifier of the LCM coordination. 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 10.5.2.2. + content: + application/json: + schema: + $ref: ./definitions/SOL002VNFLifecycleCoordination_def.yaml#/definitions/LcmCoordRequest + required: true + + responses: + Coordination.Post.201: + description: | + 201 CREATED + Shall be returned 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 + Content-Type: + description: | + The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + Location: + description: | + URI of the "Individual coordination action" resource + style: simple + explode: false + schema: + type: string + format: url + content: + application/json: + schema: + $ref: ./definitions/SOL002VNFLifecycleCoordination_def.yaml#/definitions/LcmCoord + + Coordination_async.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 VNFM shall record the signalled + delay value in the "delay" attribute of the applicable entry in the "lcmCoordinations" array in the + "VnfLcmOpOcc" 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-Type: + description: | + The MIME type of the body of the response. + style: simple + explode: false + schema: + type: string + Location: + description: | + Used in redirection, or when a new resource has been created. This header field shall be present if the + response status code is 201 or 3xx. In the present document this header field is also used if the response + status code is 202 and a new resource was created. + style: simple + explode: false + schema: + type: string + format: url + content: {} + + Coordination.Post.403: + description: > + 403 FORBIDDEN + + Shall be returned upon the following error: The starting of the coordination operation has been + rejected. + 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. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: > + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + Coordination.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 "Coordinations" resource. + Typically, this is due to the fact that no more coordination actions can be executed currently e.g. + because too many of them, or conflicting ones, are in progress. + The response body shall contain a ProblemDetails structure, in which the "detail" attribute should + convey more information about the error. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: > + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + Coordination.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 VNFM + shall record the signalled delay value in the "delay" attribute of the applicable entry in the + "rejectedLcmCoordinations" array in the "VnfLcmOpOcc" structure. + headers: + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: > + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + LcmCoord.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/SOL002VNFLifecycleCoordination_def.yaml#/definitions/LcmCoord + + LcmCoord.Get.202: + description: | + 202 ACCEPTED + Shall be returned when the management operation with which coordination is requested is still ongoing or + in the process of being cancelled, i.e. no coordination result is available yet. + The response shall be empty. + 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 + Location: + description: | + Used in redirection, or when a new resource has been created. This header field shall be present if the + response status code is 201 or 3xx. In the present document this header field is also used if the response + status code is 202 and a new resource was created. + style: simple + explode: false + schema: + type: string + format: url + content: {} + + CoordinationCancel.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 + Location: + description: | + Used in redirection, or when a new resource has been created. This header field shall be present if the + response status code is 201 or 3xx. In the present document this header field is also used if the response + status code is 202 and a new resource was created. + style: simple + explode: false + schema: + type: string + format: url + content: {} + + CoordinationCancel.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 "Individual coordination action" resource. + Typically, this is due to the fact that the coordination action has finished processing. + 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 response. + schema: + type: string + maximum: 1 + minimum: 1 + WWW-Authenticate: + description: > + Challenge if the corresponding HTTP request has not provided + authorization, or error details if the corresponding HTTP + request has provided an invalid authorization token. + schema: + type: string + maximum: 1 + minimum: 0 + Version: + description: > + Version of the API used in the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" diff --git a/src/SOL002/VNFLifecycleCoordination/definitions/SOL002VNFLifecycleCoordination_def.yaml b/src/SOL002/VNFLifecycleCoordination/definitions/SOL002VNFLifecycleCoordination_def.yaml new file mode 100644 index 0000000000000000000000000000000000000000..ce9dbbe914a2b3a54a65d4e61422553adbfbd5ef --- /dev/null +++ b/src/SOL002/VNFLifecycleCoordination/definitions/SOL002VNFLifecycleCoordination_def.yaml @@ -0,0 +1,144 @@ +# Copyright (c) ETSI 2017. +# https://forge.etsi.org/etsi-forge-copyright-notice.txt + +definitions: + LcmCoord: + description: > + This type represents an LCM coordination result. + type: object + required: + - id + - coordinationResult + - vnfInstanceId + - vnfLcmOpOccId + - lcmOperationType + - coordinationActionName + - _links + properties: + id: + description: > + Identifier of this coordination result. + $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" + coordinationResult: + description: > + The result of executing the coordination action which also implies + the action to be performed by the VNFM as the result of this coordination. + $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/LcmCoordResultType" + vnfInstanceId: + description: > + Identifier of the VNF instance which this coordination request is related to. + $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" + vnfLcmOpOccId: + description: > + The identifier of the VNF lifecycle management operation occurrence related to the coordination. + $ref: "../../../definitions/SOL002SOL003_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 "operation" attribute in the LcmOpOcc + structure that is referenced by the "vnfLcmOpOccId". + $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/LcmOperationForCoordType" + coordinationActionName: + description: > + Indicates the actual LCM coordination action. + The coordination actions that a VNF supports are declared in the VNFD. + type: string + outputParams: + description: > + Additional parameters returned by the coordination action, + e.g. on the reason for the indicated coordinationResult. + $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/KeyValuePairs" + warnings: + description: > + Warning messages that were generated while the operation was executing. + type: 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 VnfLcmOpOcc data structure. + $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + _links: + description: > + Links to resources related to this resource. + type: object + required: + - self + - vnfLcmOpOcc + - vnfInstance + properties: + self: + description: > + URI of this resource + $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Link" + vnfLcmOpOcc: + description: > + Related lifecycle management operation occurrence. + $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Link" + vnfInstance: + description: > + Related VNF instance. + $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Link" + + LcmCoordRequest: + type: object + required: + - vnfInstanceId + - vnfLcmOpOccId + - lcmOperationType + - coordinationActionName + - _links + properties: + vnfInstanceId: + description: > + Identifier of the VNF instance which this coordination request is related to. + $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" + vnfLcmOpOccId: + description: > + The identifier of the VNF lifecycle management operation occurrence related to the coordination. + $ref: "../../../definitions/SOL002SOL003_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 "operation" attribute in the LcmOpOcc + structure that is referenced by the "vnfLcmOpOccId". + $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/LcmOperationForCoordType" + coordinationActionName: + description: > + Indicates the LCM coordination action. + The coordination actions that a VNF supports are declared in the VNFD. + $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/IdentifierInVnfd" + inputParams: + description: > + Additional parameters passed as input to the coordination action. + $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/KeyValuePairs" + _links: + description: > + Links to resources related to this request. + type: object + required: + - vnfLcmOpOcc + - vnfInstance + properties: + vnfLcmOpOcc: + description: > + Related lifecycle management operation occurrence. + $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Link" + vnfInstance: + description: > + Related VNF instance. + $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Link" + + inputParams: + type: object + required: + - vnfcInstanceIds + properties: + vnfcInstanceIds: + description: > + Identifier of the VNF instance which this coordination request is related to. + $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" diff --git a/src/SOL002/VNFLifecycleManagement/VNFLifecycleManagement.yaml b/src/SOL002/VNFLifecycleManagement/VNFLifecycleManagement.yaml index e05122db016268bb03a3503da03b875f786fcb8e..a4bb1e96e194a4d95841c7ce5d1a8492684b40ec 100644 --- a/src/SOL002/VNFLifecycleManagement/VNFLifecycleManagement.yaml +++ b/src/SOL002/VNFLifecycleManagement/VNFLifecycleManagement.yaml @@ -3,24 +3,28 @@ openapi: 3.0.2 info: title: SOL002 - VNF Lifecycle Management interface description: | - SOL002 - VNF 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. + SOL002 - VNF 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. In case of + discrepancies the published ETSI Group Specification takes precedence. + Please report bugs to https://forge.etsi.org/rep/nfv/SOL002-SOL003/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 002 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/03.03.01_60/gs_NFV-SOL002v030301p.pdf + description: ETSI GS NFV-SOL 002 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/03.05.01_60/gs_NFV-SOL002v030501p.pdf servers: - - url: http://127.0.0.1/vnflcm/v1 - - url: https://127.0.0.1/vnflcm/v1 + - url: http://127.0.0.1/vnflcm/v2 + - url: https://127.0.0.1/vnflcm/v2 paths: /api_versions: @@ -32,7 +36,7 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization get: description: | - The GET method queries information about multiple VNF instances. + The GET method queries information about multiple VNF instances. See clause 5.4.2.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/filter @@ -43,7 +47,7 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/nextpage_opaque_marker responses: "200": - $ref: '#/components/responses/VnfInstances.Get' + $ref: '#/components/responses/VnfInstances.Get.200' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -72,6 +76,7 @@ paths: post: description: | The POST method creates a new VNF instance resource based on a VNF package that is onboarded and in "ENABLED" state. + See clause 5.4.2.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType @@ -79,7 +84,7 @@ paths: $ref: '#/components/requestBodies/VnfInstanceCreationRequest' responses: "201": - $ref: '#/components/responses/VnfInstances.Post' + $ref: '#/components/responses/VnfInstances.Post.201' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -112,10 +117,10 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization get: description: | - Information about a VNF instance by reading an "Individual VNF instance". + Information about a VNF instance by reading an "Individual VNF instance". See clause 5.4.3.3.2. responses: "200": - $ref: '#/components/responses/IndividualVnfInstance.Get' + $ref: '#/components/responses/IndividualVnfInstance.Get.200' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -143,10 +148,12 @@ paths: delete: description: | - This method deletes an "Individual VNF instance" resource. + This method deletes an "Individual VNF instance" resource. See clause 5.4.3.3.5. responses: "204": - $ref: '#/components/responses/IndividualVnfInstance.Delete' + $ref: '#/components/responses/IndividualVnfInstance.Delete.204' + "409": + $ref: '#/components/responses/IndividualVnfInstance.Delete.409' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -159,8 +166,6 @@ paths: $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405 "406": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406 - "409": - $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/409 "416": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416 "422": @@ -176,15 +181,14 @@ paths: patch: description: | - This method modifies an "Individual VNF instance" resource. Changes to the VNF configurable properties are - applied to the configuration in the VNF instance, and are reflected in the representation of this resource. - Other changes are applied to the VNF instance information managed by the VNFM, and are reflected in the - representation of this resource. + This method modifies an "Individual VNF instance" resource. See clause 5.4.3.3.4. requestBody: $ref: '#/components/requestBodies/VnfInstanceModificationRequest' responses: "202": - $ref: '#/components/responses/IndividualVnfInstance.Patch' + $ref: '#/components/responses/IndividualVnfInstance.Patch.202' + "409": + $ref: '#/components/responses/IndividualVnfInstance.Patch.409' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -197,8 +201,6 @@ paths: $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405 "406": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406 - "409": - $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/409 "412": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/412 "416": @@ -221,12 +223,14 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization post: description: | - The POST method instantiates a VNF instance. + The POST method instantiates a VNF instance. See clause 5.4.4.3.1. requestBody: $ref: '#/components/requestBodies/VnfInstanceInstantiationRequest' responses: "202": - $ref: '#/components/responses/InstantiateVnfInstance.Post' + $ref: '#/components/responses/InstantiateVnfInstance.Post.202' + "409": + $ref: '#/components/responses/InstantiateVnfInstance.Post.409' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -239,8 +243,6 @@ paths: $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405 "406": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406 - "409": - $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/409 "416": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416 "422": @@ -261,12 +263,14 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization post: description: | - The POST method requests to scale a VNF instance resource incrementally. + The POST method requests to scale a VNF instance resource incrementally. See clause 5.4.5.3.1. requestBody: $ref: '#/components/requestBodies/VnfInstanceScaleRequest' responses: "202": - $ref: '#/components/responses/ScaleVnfInstance.Post' + $ref: '#/components/responses/ScaleVnfInstance.Post.202' + "409": + $ref: '#/components/responses/ScaleVnfInstance.Post.409' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -279,8 +283,6 @@ paths: $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405 "406": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406 - "409": - $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/409 "416": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416 "422": @@ -301,12 +303,14 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization post: description: | - The POST method requests to scale a VNF instance resource to a target level. + The POST method requests to scale a VNF instance resource to a target level. See clause 5.4.6.3.1. requestBody: $ref: '#/components/requestBodies/VnfInstanceScaleToLevelRequest' responses: "202": - $ref: '#/components/responses/ScaleVnfInstanceToLevel.Post' + $ref: '#/components/responses/ScaleVnfInstanceToLevel.Post.202' + "409": + $ref: '#/components/responses/ScaleVnfInstanceToLevel.Post.409' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -319,8 +323,6 @@ paths: $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405 "406": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406 - "409": - $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/409 "416": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416 "422": @@ -341,12 +343,14 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization post: description: | - The POST method changes the deployment flavour of a VNF instance. + The POST method changes the deployment flavour of a VNF instance. See clause 5.4.7.3.1. requestBody: $ref: '#/components/requestBodies/VnfInstanceChangeFlavourRequest' responses: "202": - $ref: '#/components/responses/VnfInstanceChangeFlavour.Post' + $ref: '#/components/responses/VnfInstanceChangeFlavour.Post.202' + "409": + $ref: '#/components/responses/VnfInstanceChangeFlavour.Post.409' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -359,8 +363,6 @@ paths: $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405 "406": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406 - "409": - $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/409 "416": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416 "422": @@ -382,12 +384,14 @@ paths: post: description: | The POST method triggers the VNFM to terminate a VNF instance and to request to the VIM the release of its - used virtualised resources. + used virtualised resources. See clause 5.4.8.3.1. requestBody: $ref: '#/components/requestBodies/VnfInstanceTerminationRequest' responses: "202": - $ref: '#/components/responses/TerminateVnfInstance.Post' + $ref: '#/components/responses/TerminateVnfInstance.Post.202' + "409": + $ref: '#/components/responses/TerminateVnfInstance.Post.409' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -400,8 +404,6 @@ paths: $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405 "406": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406 - "409": - $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/409 "416": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416 "422": @@ -422,12 +424,14 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization post: description: | - The POST method requests to heal a VNF instance. + The POST method requests to heal a VNF instance. See clause 5.4.9.3.1. requestBody: $ref: '#/components/requestBodies/VnfInstanceHealRequest' responses: "202": - $ref: '#/components/responses/HealVnfInstance.Post' + $ref: '#/components/responses/HealVnfInstance.Post.202' + "409": + $ref: '#/components/responses/HealVnfInstance.Post.409' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -440,8 +444,6 @@ paths: $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405 "406": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406 - "409": - $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/409 "416": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416 "422": @@ -462,12 +464,14 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization post: description: | - The POST method changes the operational state of a VNF instance. + The POST method changes the operational state of a VNF instance. See clause 5.4.10.3.1. requestBody: $ref: '#/components/requestBodies/VnfInstanceOperateRequest' responses: "202": - $ref: '#/components/responses/OperateVnfInstance.Post' + $ref: '#/components/responses/OperateVnfInstance.Post.202' + "409": + $ref: '#/components/responses/OperateVnfInstance.Post.409' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -480,8 +484,6 @@ paths: $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405 "406": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406 - "409": - $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/409 "416": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416 "422": @@ -502,12 +504,14 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization post: description: | - The POST method changes the external connectivity of a VNF instance. + The POST method changes the external connectivity of a VNF instance. See clause 5.4.11.3.1. requestBody: $ref: '#/components/requestBodies/VnfInstanceChangeExtConnRequest' responses: "202": - $ref: '#/components/responses/VnfInstanceChangeExtConn.Post' + $ref: '#/components/responses/VnfInstanceChangeExtConn.Post.202' + "409": + $ref: '#/components/responses/VnfInstanceChangeExtConn.Post.409' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -520,8 +524,6 @@ paths: $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405 "406": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406 - "409": - $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/409 "416": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416 "422": @@ -543,11 +545,14 @@ paths: post: description: | The POST method changes the current VNF package on which the VNF instance is based. + See clause 5.4.11a.3.1. requestBody: $ref: '#/components/requestBodies/VnfInstanceChangeVnfPkgRequest' responses: "202": - $ref: '#/components/responses/VnfInstanceChangeVnfPkg.Post' + $ref: '#/components/responses/VnfInstanceChangeVnfPkg.Post.202' + "409": + $ref: '#/components/responses/VnfInstanceChangeVnfPkg.Post.409' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -560,8 +565,6 @@ paths: $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405 "406": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406 - "409": - $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/409 "416": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416 "422": @@ -581,7 +584,8 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization get: description: | - The client can use this method to query status information about multiple VNF lifecycle management operation occurrences. + The client can use this method to query status information about multiple VNF lifecycle + management operation occurrences. See clause 5.4.12.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/filter - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/all_fields @@ -591,7 +595,7 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/nextpage_opaque_marker responses: "200": - $ref: '#/components/responses/VnfLcmOpOccs.Get' + $ref: '#/components/responses/VnfLcmOpOccs.Get.200' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -625,10 +629,10 @@ paths: get: description: | The client can use this method to retrieve status information about a VNF lifecycle management operation occurrence - by reading an "Individual VNF LCM operation occurrence" resource. + by reading an "Individual VNF LCM operation occurrence" resource. See clause 5.4.13.3.2. responses: "200": - $ref: '#/components/responses/IndividualVnfLcmOpOcc.Get' + $ref: '#/components/responses/IndividualVnfLcmOpOcc.Get.200' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -663,9 +667,12 @@ paths: description: | The POST method initiates retrying a VNF lifecycle operation if that operation has experienced a temporary failure, i.e. the related "Individual VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. + See clause 5.4.14.3.1. responses: "202": - $ref: '#/components/responses/VnfLcmOpOccRetry.Post' + $ref: '#/components/responses/VnfLcmOpOccRetry.Post.202' + "409": + $ref: '#/components/responses/VnfLcmOpOccRetry.Post.409' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -678,8 +685,6 @@ paths: $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405 "406": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406 - "409": - $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/409 "416": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416 "422": @@ -702,9 +707,12 @@ paths: description: | The POST method initiates rolling back a VNF lifecycle operation if that operation has experienced a temporary failure, i.e. the related "Individual VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. + See clause 5.4.15.3.1. responses: "202": - $ref: '#/components/responses/VnfLcmOpOccRollback.Post' + $ref: '#/components/responses/VnfLcmOpOccRollback.Post.202' + "409": + $ref: '#/components/responses/VnfLcmOpOccRollback.Post.409' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -717,8 +725,6 @@ paths: $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405 "406": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406 - "409": - $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/409 "416": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416 "422": @@ -740,10 +746,12 @@ paths: post: description: | The POST method marks a VNF lifecycle management operation occurrence as "finally failed" if that operation - occurrence is in "FAILED_TEMP" state. + occurrence is in "FAILED_TEMP" state. See clause 5.4.16.3.1. responses: "200": - $ref: '#/components/responses/VnfLcmOpOccFail.Post' + $ref: '#/components/responses/VnfLcmOpOccFail.Post.200' + "409": + $ref: '#/components/responses/VnfLcmOpOccFail.Post.409' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -756,8 +764,6 @@ paths: $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405 "406": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406 - "409": - $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/409 "416": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416 "422": @@ -780,9 +786,12 @@ paths: description: | The POST method initiates cancelling an ongoing VNF lifecycle operation while it is being executed or rolled back, i.e. the related "Individual VNF LCM operation occurrence" is either in "PROCESSING" or "ROLLING_BACK" state. + See clause 5.4.17.3.1. responses: "202": - $ref: '#/components/responses/VnfLcmOpOccCancel.Post' + $ref: '#/components/responses/VnfLcmOpOccCancel.Post.202' + "409": + $ref: '#/components/responses/VnfLcmOpOccCancel.Post.409' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -795,8 +804,6 @@ paths: $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405 "406": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406 - "409": - $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/409 "416": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416 "422": @@ -817,13 +824,13 @@ paths: get: 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. + be used e.g. for resynchronization after error situations. See clause 5.4.18.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/filter - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/nextpage_opaque_marker responses: "200": - $ref: '#/components/responses/Subscriptions.Get' + $ref: '#/components/responses/Subscriptions.Get.200' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -851,12 +858,12 @@ paths: post: description: | - The POST method creates a new subscription. + The POST method creates a new subscription. See clause 5.4.18.3.1. requestBody: $ref: '#/components/requestBodies/VnfLcmSubscriptionRequest' responses: "201": - $ref: '#/components/responses/Subscriptions.Post' + $ref: '#/components/responses/Subscriptions.Post.201' "303": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/303 "400": @@ -892,9 +899,10 @@ paths: get: description: | The GET method retrieves information about a subscription by reading an "Individual subscription" resource. + See clause 5.4.19.3.2. responses: "200": - $ref: '#/components/responses/IndividualSubscription.Get' + $ref: '#/components/responses/IndividualSubscription.Get.200' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -922,10 +930,10 @@ paths: delete: description: | - The DELETE method terminates an individual subscription. + The DELETE method terminates an individual subscription. See clause 5.4.19.3.5. responses: "204": - $ref: '#/components/responses/IndividualSubscription.Delete' + $ref: '#/components/responses/IndividualSubscription.Delete.204' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -959,12 +967,14 @@ paths: post: description: | The POST method requests tacking a VNF instance snapshot and populating a previously created VNF snapshot resource - (refer to clause 5.4.23.3.1) with the snapshot content. + (refer to clause 5.4.23.3.1) with the snapshot content. See clause 5.4.21.3.1. requestBody: $ref: '#/components/requestBodies/VnfInstanceCreateSnapshotRequest' responses: "202": - $ref: '#/components/responses/VnfInstanceCreateSnapshot.Post' + $ref: '#/components/responses/VnfInstanceCreateSnapshot.Post.202' + "409": + $ref: '#/components/responses/VnfInstanceCreateSnapshot.Post.409' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -977,8 +987,6 @@ paths: $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405 "406": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406 - "409": - $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/409 "416": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416 "422": @@ -999,12 +1007,14 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization post: description: | - The POST method requests reverting a VNF/VNFC instance to a VNF/VNFC snapshot. + The POST method requests reverting a VNF/VNFC instance to a VNF/VNFC snapshot. See clause 5.4.22.3.1. requestBody: $ref: '#/components/requestBodies/VnfInstanceRevertToSnapshotRequest' responses: "202": - $ref: '#/components/responses/VnfInstanceRevertToSnapshot.Post' + $ref: '#/components/responses/VnfInstanceRevertToSnapshot.Post.202' + "409": + $ref: '#/components/responses/VnfInstanceRevertToSnapshot.Post.409' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -1017,8 +1027,6 @@ paths: $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405 "406": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406 - "409": - $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/409 "416": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416 "422": @@ -1038,12 +1046,12 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization post: description: | - The POST method creates a new individual VNF snapshot resource. + The POST method creates a new individual VNF snapshot resource. See clause 5.4.23.3.1. requestBody: $ref: '#/components/requestBodies/VnfSnapshotsRequest' responses: "201": - $ref: '#/components/responses/VnfSnapshots.Post' + $ref: '#/components/responses/VnfSnapshots.Post.201' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -1073,7 +1081,7 @@ paths: get: description: | - The GET method queries information about multiple VNF/VNFC snapshots. + The GET method queries information about multiple VNF/VNFC snapshots. See clause 5.4.23.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/filter @@ -1084,7 +1092,7 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/nextpage_opaque_marker responses: "200": - $ref: '#/components/responses/VnfSnapshots.Get' + $ref: '#/components/responses/VnfSnapshots.Get.200' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -1118,9 +1126,10 @@ paths: get: description: | The GET method retrieves information about a VNF /VNFC snapshot by reading an individual VNF snapshot resource. + See clause 5.4.24.3.2. responses: "200": - $ref: '#/components/responses/IndividualVnfSnapshot.Get' + $ref: '#/components/responses/IndividualVnfSnapshot.Get.200' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -1149,10 +1158,12 @@ paths: delete: description: | This method deletes an individual VNF snapshot resource and the associated VNF snapshot information managed by - the VNFM, and any resource associated to the VNF/VNFC snapshot managed by the VIM. + the VNFM, and any resource associated to the VNF/VNFC snapshot managed by the VIM. See clause 5.4.24.3.5. responses: - "200": - $ref: '#/components/responses/IndividualVnfSnapshot.Delete' + "204": + $ref: '#/components/responses/IndividualVnfSnapshot.Delete.204' + "409": + $ref: '#/components/responses/IndividualVnfSnapshot.Delete.409' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -1165,8 +1176,6 @@ paths: $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/405 "406": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406 - "409": - $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/409 "416": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416 "422": @@ -1363,7 +1372,7 @@ components: required: true responses: - VnfInstances.Get: + VnfInstances.Get.200: description: | 200 OK Information about zero or more VNF instances has been queried successfully. The response body shall contain in @@ -1396,7 +1405,7 @@ components: items: $ref: ./definitions/SOL002VNFLifecycleManagement_def.yaml#/definitions/VnfInstance - VnfInstances.Post: + VnfInstances.Post.201: description: | 201 CREATED Shall be returned when a new "Individual VNF Instance" resource and the associated VNF instance identifier @@ -1439,7 +1448,7 @@ components: schema: $ref: ./definitions/SOL002VNFLifecycleManagement_def.yaml#/definitions/VnfInstance - IndividualVnfInstance.Get: + IndividualVnfInstance.Get.200: description: | 200 OK Information about an individual VNF instance has been read successfully. The response body shall contain a @@ -1470,7 +1479,7 @@ components: schema: $ref: ./definitions/SOL002VNFLifecycleManagement_def.yaml#/definitions/VnfInstance - IndividualVnfInstance.Delete: + IndividualVnfInstance.Delete.204: description: | 204 NO CONTENT The "Individual VNF instance" resource and the associated VNF identifier were deleted successfully. @@ -1495,7 +1504,46 @@ components: schema: $ref: ../../definitions/SOL002SOL003VNFLifecycleManagement_def.yaml#/definitions/VnfIdentifierDeletionNotification - IndividualVnfInstance.Patch: + IndividualVnfInstance.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 "Individual + VNF 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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + IndividualVnfInstance.Patch.202: description: | 202 ACCEPTED The request was accepted for processing, but the processing has not been completed. On success, the HTTP @@ -1534,19 +1582,20 @@ components: format: url content: {} - InstantiateVnfInstance.Post: + IndividualVnfInstance.Patch.409: description: | - 202 ACCEPTED - 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 "VNF LCM operation occurrence" resource corresponding to the operation. + 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 VNF instance" + resource + Typically, this is due to the fact that another LCM + operation is ongoing. + The response body shall contain a ProblemDetails + structure, in which the "detail" attribute should 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 @@ -1555,30 +1604,30 @@ components: explode: false schema: type: string - Content-Type: - description: The MIME type of the body of the response. + Version: + description: The used API version. style: simple explode: false schema: type: string - Location: + Content-Type: description: | - Used in redirection, or when a new resource has been created. This header field shall be present if the - response status code is 201 or 3xx. In the present document this header field is also used if the response - status code is 202 and a new resource was created. + The MIME type of the body of the response. Reference: IETF RFC 7231 style: simple explode: false schema: type: string - format: url - content: {} + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" - ScaleVnfInstance.Post: + InstantiateVnfInstance.Post.202: description: | 202 ACCEPTED 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 VNF LCM operation occurrence" resource corresponding to the operation. + newly-created "VNF LCM operation occurrence" resource corresponding to the operation. headers: Version: description: The used API version. @@ -1612,19 +1661,21 @@ components: format: url content: {} - ScaleVnfInstanceToLevel.Post: + InstantiateVnfInstance.Post.409: description: | - 202 ACCEPTED - 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 - "VNF LCM operation occurrence" resource corresponding to the operation. + 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 "Individual + VNF instance" resource is in INSTANTIATED state + or that a required (see note) child attribute of the + "extensions" attribute has not been set. + 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 @@ -1633,25 +1684,25 @@ components: explode: false schema: type: string - Content-Type: - description: The MIME type of the body of the response. + Version: + description: The used API version. style: simple explode: false schema: type: string - Location: + Content-Type: description: | - Used in redirection, or when a new resource has been created. This header field shall be present if the - response status code is 201 or 3xx. In the present document this header field is also used if the response - status code is 202 and a new resource was created. + The MIME type of the body of the response. Reference: IETF RFC 7231 style: simple explode: false schema: type: string - format: url - content: {} + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" - VnfInstanceChangeFlavour.Post: + ScaleVnfInstance.Post.202: description: | 202 ACCEPTED The request has been accepted for processing, but the processing has not been completed. The response body @@ -1690,19 +1741,22 @@ components: format: url content: {} - TerminateVnfInstance.Post: - description: | - 202 ACCEPTED - 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 VNF LCM operation occurrence" - resource corresponding to the operation. + ScaleVnfInstance.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 "Individual + VNF instance" resource is in NOT_INSTANTIATED + state, that another lifecycle management operation is + ongoing, or that a required (see note) child attribute + of the "extensions" attribute has not been set. + 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 @@ -1711,30 +1765,30 @@ components: explode: false schema: type: string - Content-Type: - description: The MIME type of the body of the response. + Version: + description: The used API version. style: simple explode: false schema: type: string - Location: + Content-Type: description: | - Used in redirection, or when a new resource has been created. This header field shall be present if the - response status code is 201 or 3xx. In the present document this header field is also used if the response - status code is 202 and a new resource was created. + The MIME type of the body of the response. Reference: IETF RFC 7231 style: simple explode: false schema: type: string - format: url - content: {} + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" - HealVnfInstance.Post: + ScaleVnfInstanceToLevel.Post.202: description: | 202 ACCEPTED - 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 VNF LCM operation occurrence" resource corresponding to the operation. + 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 + "VNF LCM operation occurrence" resource corresponding to the operation. headers: Version: description: The used API version. @@ -1768,19 +1822,23 @@ components: format: url content: {} - OperateVnfInstance.Post: - description: | - 202 ACCEPTED - 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 "VNF LCM operation occurrence" resource corresponding to the operation. + ScaleVnfInstanceToLevel.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 VNF instance + resource is in NOT_INSTANTIATED state, that + another lifecycle management operation is ongoing, + or that a required (see note) child attribute of the + "extensions" attribute has not been set. + The response body shall contain a ProblemDetails + structure, in which the "detail" attribute shall convey + more information about the error. + Note: Required attributes are marked as "required" in the VNFD. 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 @@ -1789,30 +1847,30 @@ components: explode: false schema: type: string - Content-Type: - description: The MIME type of the body of the response. + Version: + description: The used API version. style: simple explode: false schema: type: string - Location: + Content-Type: description: | - Used in redirection, or when a new resource has been created. This header field shall be present if the - response status code is 201 or 3xx. In the present document this header field is also used if the response - status code is 202 and a new resource was created. + The MIME type of the body of the response. Reference: IETF RFC 7231 style: simple explode: false schema: type: string - format: url - content: {} + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" - VnfInstanceChangeExtConn.Post: + VnfInstanceChangeFlavour.Post.202: description: | 202 ACCEPTED 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 "VNF LCM operation occurrence" resource corresponding to the operation. + newly-created "Individual VNF LCM operation occurrence" resource corresponding to the operation. headers: Version: description: The used API version. @@ -1846,12 +1904,57 @@ components: format: url content: {} - VnfInstanceChangeVnfPkg.Post: + VnfInstanceChangeFlavour.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 + "Individual VNF instance" resource is in + NOT_INSTANTIATED state, that another + lifecycle management operation is ongoing, or + that a required (see note) child attribute of the + "extensions" attribute has not been set. + The response body shall contain a + ProblemDetails structure, in which the "detail" + attribute shall convey more information about the + error. + note: Required attributes are marked as "required" in the VNFD. + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + TerminateVnfInstance.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 VNF LCM operation occurrence" resource corresponding to the instantiation operation. + 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 VNF LCM operation occurrence" + resource corresponding to the operation. headers: Version: description: The used API version. @@ -1885,22 +1988,23 @@ components: format: url content: {} - VnfLcmOpOccs.Get: - description: | - 200 OK - Status information for zero or more VNF lifecycle management operation occurrences has been queried - successfully. The response body shall contain in an array the status information about zero or more VNF - lifecycle operation occurrences, as defined in clause 5.5.2.13. If the VNFM 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. + TerminateVnfInstance.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 "Individual VNF + instance" resource is in NOT_INSTANTIATED state, or + that another lifecycle management operation is + ongoing, or that a required (see note) child attribute of + the "extensions" attribute has not been set. + The response body shall contain a ProblemDetails + structure, in which the "detail" attribute shall convey + more information about the error. + note: Required attributes are marked as "required" in the VNFD. 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 @@ -1909,15 +2013,15 @@ components: explode: false schema: type: string - Link: - description: | - Reference to other resources. Used for paging in the present document, see clause 4.7.2.1. + Version: + description: The used API version. style: simple explode: false schema: type: string Content-Type: - description: The MIME type of the body of the response. + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 style: simple explode: false schema: @@ -1925,13 +2029,380 @@ components: content: application/json: schema: - $ref: ./definitions/SOL002VNFLifecycleManagement_def.yaml#/definitions/VnfLcmOpOcc + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" - IndividualVnfLcmOpOcc.Get: + HealVnfInstance.Post.202: description: | - 200 OK - Information about an individual VNF instance has been queried successfully. The response body shall contain - status information about a VNF lifecycle management operation occurrence. + 202 ACCEPTED + 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 VNF LCM operation occurrence" resource corresponding to the operation. + 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 + Location: + description: | + Used in redirection, or when a new resource has been created. This header field shall be present if the + response status code is 201 or 3xx. In the present document this header field is also used if the response + status code is 202 and a new resource was created. + style: simple + explode: false + schema: + type: string + format: url + content: {} + + HealVnfInstance.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 "Individual VNF + instance" resource is in NOT_INSTANTIATED state, + that another lifecycle management operation is + ongoing, or that a required (see note) child attribute of + the "extensions" attribute has not been set. + The response body shall contain a ProblemDetails + structure, in which the "detail" attribute shall convey + more information about the error. + note: Required attributes are marked as "required" in the VNFD. + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + OperateVnfInstance.Post.202: + description: | + 202 ACCEPTED + 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 "VNF LCM operation occurrence" resource corresponding to the operation. + 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 + Location: + description: | + Used in redirection, or when a new resource has been created. This header field shall be present if the + response status code is 201 or 3xx. In the present document this header field is also used if the response + status code is 202 and a new resource was created. + style: simple + explode: false + schema: + type: string + format: url + content: {} + + OperateVnfInstance.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 "Individual VNF + instance" resource is in NOT_INSTANTIATED state, + that another lifecycle management operation is + ongoing, or that a required (see note) child attribute of + the "extensions" attribute has not been set. + The response body shall contain a ProblemDetails + structure, in which the "detail" attribute shall convey + more information about the error. + note: Required attributes are marked as "required" in the VNFD. + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + VnfInstanceChangeExtConn.Post.202: + description: | + 202 ACCEPTED + 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 "VNF LCM operation occurrence" resource corresponding to the operation. + 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 + Location: + description: | + Used in redirection, or when a new resource has been created. This header field shall be present if the + response status code is 201 or 3xx. In the present document this header field is also used if the response + status code is 202 and a new resource was created. + style: simple + explode: false + schema: + type: string + format: url + content: {} + + VnfInstanceChangeExtConn.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 another + lifecycle management operation is ongoing, or that + a required (see note) child attribute of the + "extensions" attribute has not been set. + The response body shall contain a ProblemDetails + structure, in which the "detail" attribute shall convey + more information about the error. + note: Required attributes are marked as "required" in the VNFD. + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + VnfInstanceChangeVnfPkg.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 VNF LCM operation occurrence" resource corresponding to the instantiation operation. + 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 + Location: + description: | + Used in redirection, or when a new resource has been created. This header field shall be present if the + response status code is 201 or 3xx. In the present document this header field is also used if the response + status code is 202 and a new resource was created. + style: simple + explode: false + schema: + type: string + format: url + content: {} + + VnfInstanceChangeVnfPkg.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 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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + VnfLcmOpOccs.Get.200: + description: | + 200 OK + Status information for zero or more VNF lifecycle management operation occurrences has been queried + successfully. The response body shall contain in an array the status information about zero or more VNF + lifecycle operation occurrences, as defined in clause 5.5.2.13. If the VNFM 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: | + 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 + 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. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: ./definitions/SOL002VNFLifecycleManagement_def.yaml#/definitions/VnfLcmOpOcc + + IndividualVnfLcmOpOcc.Get.200: + description: | + 200 OK + Information about an individual VNF instance has been queried successfully. The response body shall contain + status information about a VNF lifecycle management operation occurrence. headers: Version: description: The used API version. @@ -1958,7 +2429,7 @@ components: schema: $ref: ./definitions/SOL002VNFLifecycleManagement_def.yaml#/definitions/VnfLcmOpOcc - VnfLcmOpOccRetry.Post: + VnfLcmOpOccRetry.Post.202: description: | 202 ACCEPTED The request has been accepted for processing, but processing has not been completed. The response shall @@ -1980,7 +2451,49 @@ components: type: string content: {} - VnfLcmOpOccRollback.Post: + VnfLcmOpOccRetry.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 VNF LCM operation + occurrence. + Typically, this is due to the fact that the VNF 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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + VnfLcmOpOccRollback.Post.202: description: | 202 ACCEPTED The request has been accepted for processing, but processing has not been completed. The response shall have @@ -2002,7 +2515,49 @@ components: type: string content: {} - VnfLcmOpOccFail.Post: + VnfLcmOpOccRollback.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 VNF LCM operation + occurrence. + Typically, this is due to the fact that the VNF 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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + VnfLcmOpOccFail.Post.200: description: | 200 OK The state of the VNF lifecycle management operation occurrence has been changed successfully. The response @@ -2033,7 +2588,49 @@ components: schema: $ref: ./definitions/SOL002VNFLifecycleManagement_def.yaml#/definitions/VnfLcmOpOcc - VnfLcmOpOccCancel.Post: + VnfLcmOpOccFail.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 VNF LCM operation + occurrence. + Typically, this is due to the fact that the VNF 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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + VnfLcmOpOccCancel.Post.202: description: | 202 ACCEPTED The request has been accepted for processing, but processing has not been completed. The response shall @@ -2055,7 +2652,48 @@ components: type: string content: {} - Subscriptions.Get: + VnfLcmOpOccCancel.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 VNF LCM operation + occurrence. + 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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + Subscriptions.Get.200: description: | 200 OK The list of subscriptions has been queried successfully. The response body shall contain in an array the @@ -2087,7 +2725,7 @@ components: schema: $ref: ../../definitions/SOL002SOL003VNFLifecycleManagement_def.yaml#/definitions/LccnSubscription - Subscriptions.Post: + Subscriptions.Post.201: description: | 201 CREATED The subscription has been created successfully. The response body shall contain a representation of the @@ -2126,7 +2764,7 @@ components: schema: $ref: ../../definitions/SOL002SOL003VNFLifecycleManagement_def.yaml#/definitions/LccnSubscription - IndividualSubscription.Get: + IndividualSubscription.Get.200: description: | 200 OK The operation has completed successfully. The response body shall contain a representation of the @@ -2157,7 +2795,7 @@ components: schema: $ref: ../../definitions/SOL002SOL003VNFLifecycleManagement_def.yaml#/definitions/LccnSubscription - IndividualSubscription.Delete: + IndividualSubscription.Delete.204: description: | 204 NO CONTENT The "Individual subscription" resource has been deleted successfully. The response body shall be empty. @@ -2178,7 +2816,7 @@ components: type: string content: {} - VnfInstanceCreateSnapshot.Post: + VnfInstanceCreateSnapshot.Post.202: description: | 202 ACCEPTED Shall be returned when the request was accepted for processing, but the processing has not been completed. @@ -2217,7 +2855,48 @@ components: format: url content: {} - VnfInstanceRevertToSnapshot.Post: + VnfInstanceCreateSnapshot.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 VNF + 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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + VnfInstanceRevertToSnapshot.Post.202: description: | 202 ACCEPTED Shall be returned when the request was accepted for processing, but the processing has not been completed. @@ -2256,9 +2935,50 @@ components: format: url content: {} - VnfSnapshots.Post: + VnfInstanceRevertToSnapshot.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 VNF + 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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + VnfSnapshots.Post.201: description: | - 202 CREATED + 201 CREATED Shall be returned when an individual VNF snapshot resource has been created successfully. The response body shall contain a representation of the new individual VNF snapshot resource, as defined in clause 5.5.2.21. The HTTP response shall include a "Location" HTTP header that contains the resource URI of the @@ -2299,7 +3019,7 @@ components: schema: $ref: ./definitions/SOL002VNFLifecycleManagement_def.yaml#/definitions/VnfSnapshotInfo - VnfSnapshots.Get: + VnfSnapshots.Get.200: description: | 200 OK Shall be returned when information about zero or more VNF snapshots was queried successfully. @@ -2337,8 +3057,9 @@ components: items: $ref: ./definitions/SOL002VNFLifecycleManagement_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. The response body shall contain a representation of the individual VNF snapshot resource. headers: @@ -2374,7 +3095,7 @@ components: schema: $ref: ./definitions/SOL002VNFLifecycleManagement_def.yaml#/definitions/VnfSnapshotInfo - IndividualVnfSnapshot.Delete: + IndividualVnfSnapshot.Delete.204: description: | 204 NO CONTENT The "Individual subscription" resource has been deleted successfully. The response body shall be empty. @@ -2393,4 +3114,45 @@ components: explode: false schema: type: string - content: {} \ No newline at end of file + content: {} + + IndividualVnfSnapshot.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 VNF + 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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" \ No newline at end of file diff --git a/src/SOL002/VNFLifecycleManagement/definitions/SOL002VNFLifecycleManagement_def.yaml b/src/SOL002/VNFLifecycleManagement/definitions/SOL002VNFLifecycleManagement_def.yaml index 048d434e6906a1a0972271d97b0882740eae75a3..010a5597bb6b2f69f37e9eaa4db24790dca31b1f 100644 --- a/src/SOL002/VNFLifecycleManagement/definitions/SOL002VNFLifecycleManagement_def.yaml +++ b/src/SOL002/VNFLifecycleManagement/definitions/SOL002VNFLifecycleManagement_def.yaml @@ -5,6 +5,33 @@ definitions: VnfInstance: description: > This type represents a VNF instance. + * 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: Upon creation of the VnfInstance structure, the VNFM shall create and initialize all child + attributes of "vnfConfigurableProperties", "metadata" and "extensions" that were declared + in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD, + and/or, in case of "metadata", obtained from the "CreateVnfRequest" structure. Child attributes of + "vnfConfigurableProperties", "metadata" and "extensions" that have no defined initial value shall + not be created, in order to be consistent with the semantics of the JSON Merge Patch method + (see IETF RFC 7396) that interprets null values as deletion request. + * NOTE 5: It is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case + of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding + to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc + and externally-managed multi-site VL instance (refer to clause 5.5.3.5). + * NOTE 6: Even though externally-managed internal VLs are also used for VNF-internal connectivity, + they shall not be listed in the "vnfVirtualLinkResourceInfo" attribute as this would be redundant. + type: object required: - id @@ -32,16 +59,7 @@ definitions: type: string vnfdId: description: > - Identifier of the VNFD on which the VNF instance is based. - This attribute can be modified with the PATCH method. - 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 not changed with respect - to the previous VNFD apart from 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. + Identifier of the VNFD on which the VNF instance is based. See note 1. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" vnfProvider: description: > @@ -74,16 +92,9 @@ definitions: Configurable properties referred in these attributes shall be declared in the VNFD. The declaration of configurable properties in the VNFD can optionally - contain the specification of initial values. - 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. + contain the specification of initial values. See note 2, note 3 and note 4. The VNFM + shall reject requests to write configurable properties that are not declared in the + VNFD with a "422 Unprocessable entity" error response as defined in clause 6.4 of ETSI GS NFV SOL 013. 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: @@ -93,7 +104,11 @@ definitions: - 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. - This attributeThese attributes can be modified with the PATCH method. + These configurable properties can be initialized with default values from the VNFD (see note 4). + Configurable properties can be modified with values passed in the request structures of certain + LCM operations, such as the InstantiateVnfRequest structure. + Further, these configurable properties can be created, modified or deleted with the PATCH method. + In addition, the provisions in clause 5.7 shall apply. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/KeyValuePairs" instantiationState: description: > @@ -125,6 +140,8 @@ definitions: description: > Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how "big" the VNF has been scaled w.r.t. that aspect. + This attribute shall be present if the VNF supports scaling. + See clause B.2 for an explanation of VNF scaling. type: array items: $ref: "../../../definitions/SOL002SOL003VNFLifecycleManagement_def.yaml#/definitions/ScaleInfo" @@ -144,6 +161,15 @@ definitions: minItems: 1 items: $ref: "../../../definitions/SOL002SOL003VNFLifecycleManagement_def.yaml#/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/SOL002SOL003VNFLifecycleManagement_def.yaml#/definitions/VipCpInfo" extVirtualLinkInfo: description: > Information about the external VLs the VNF instance is connected to. @@ -152,11 +178,13 @@ definitions: $ref: "../../../definitions/SOL002SOL003VNFLifecycleManagement_def.yaml#/definitions/ExtVirtualLinkInfo" extManagedVirtualLinkInfo: description: > - External virtual links the VNF instance is connected to. + Information about the externally managed internal VLs of the VNF instance. See note 5 and note 6. It is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed multi-site VL instance (refer to clause 5.5.3.5). + Even though externally-managed internal VLs are also used for VNF-internal connectivity, + they shall not be listed in the "vnfVirtualLinkResourceInfo" attribute as this would be redundant. type: array items: $ref: "#/definitions/ExtManagedVirtualLinkInfo" @@ -184,7 +212,9 @@ definitions: vnfVirtualLinkResourceInfo: description: > Information about the virtualised network resources used by the VLs - of the VNF instance. + of the VNF instance. See note 6. + Even though externally-managed internal VLs are also used for VNF-internal connectivity, + they shall not be listed in the "vnfVirtualLinkResourceInfo" attribute as this would be redundant. type: array items: $ref: "#/definitions/VnfVirtualLinkResourceInfo" @@ -209,40 +239,40 @@ definitions: Modifying the values of these attributes has no effect on the VNF instance, it only affects the information represented in the VnfInstance structure. - Metadata that VNF provider foresees shall be declared in the VNFD. The VNFM shall - accept requests to write metadata that are not are declared in the VNFD. + Metadata that VNF provider foresees shall be declared in the VNFD. The declaration of metadata in + the VNFD can optionally contain the specification of initial values. See note 2 and note 4. The VNFM shall + accept requests to write metadata that are not are declared in the VNFD. - These attributes can be initialized with default values from VNFD and/or with values + These attributes can be initialized with default values from VNFD (see note 4) and/or with values passed in the CreateVnfRequest structure (see clause 5.5.2.3). - This attribute can be modified with the PATCH method. - - ETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. + These attributes can be created, modified or removed with the PATCH method. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/KeyValuePairs" extensions: description: > - Additional VNF specific attributes that affect the lifecycle management of this - VNF instance by the VNFM, or the lifecycle management scripts. - These attributes represent values that are stored persistently in the VnfInstance - structure for consumption by the VNFM, or by the lifecycle management scripts - during the execution of VNF lifecycle management operations. - - Modifying the values of these attributes has no direct effect on the VNF instance; - however, the modified attribute values can be considered during subsequent VNF - lifecycle management operations, which means that the modified values can indirectly - affect the configuration of the VNF instance. - - All extensions that are allowed for the VNF shall be declared in the VNFD. - This attribute can be be initialized with default values from VNFD and/or - with values passed in the InstantiateVnfRequest structure (see clause 5.5.2.4). - - A value initialised with default values from the VNFD can be updated with values - passed in the InstantiateVnfRequest structure. - - Further, these attributes can be modified with the PATCH method. - - ETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on - TOSCA specifications. + Additional VNF specific attributes that affect the lifecycle management of this VNF instance. + These attributes represent values that are stored persistently in the VnfInstance structure for + consumption by the VNFM, or by the lifecycle management scripts during the execution of VNF + lifecycle management operations. + + All extensions that are allowed for the VNF are declared in the VNFD. The declaration of an + extension in the VNFD contains information on whether its presence is optional or required, + and optionally can specify an initial value. See note 2 and note 4. The VNFM shall reject + requests to write extension attributes that are not declared in the VNFD with a "422 Unprocessable + entity" error response as defined in clause 6.4 of ETSI GS NFV SOL 013. + + Modifying the values of these attributes has no direct effect on the VNF instance; however, the + modified attribute values can be considered during subsequent VNF lifecycle management operations, + which means that the modified values can indirectly affect the configuration of the VNF instance. + + These attributes can be initialized with default values from the VNFD (see note 4). + + These attributes can be modified with values passed in the request structures of certain LCM operations, + such as the InstantiateVnfRequest structure. + + Further, these attributes can be created, modified or deleted with the PATCH method. + + In addition, the provisions in clause 5.7 shall apply. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/KeyValuePairs" _links: description: > @@ -324,6 +354,13 @@ definitions: $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Link" InstantiateVnfRequest: + description: > + This type represents request parameters for the "Instantiate VNF" operation. + * NOTE: 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. type: object required: - flavourId @@ -346,11 +383,7 @@ definitions: $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/ExtVirtualLinkData" extManagedVirtualLinks: description: > - Information about external VLs to connect the VNF to. - 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. + Information about external VLs to connect the VNF to. See note. type: array items: $ref: "#/definitions/ExtManagedVirtualLinkData" @@ -373,14 +406,19 @@ definitions: $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/KeyValuePairs" vnfConfigurableProperties: description: > - If present, this attribute provides modifications to the default values, as obtained from the VNFD, of the - “vnfConfigurableProperties” attribute in the "VnfInstance", as defined in clause 5.5.2.2. + If present, this attribute provides modifications to the default values, as obtained from the VNFD, of the + "vnfConfigurableProperties" attribute in "VnfInstance", as defined in clause 5.5.2.2. Provisions for handling configurable properties during the operation are defined in clause 5.4.4.3.1. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/KeyValuePairs" ChangeVnfFlavourRequest: description: > This type represents request parameters for the "Change VNF flavour" operation. + * NOTE: 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. type: object required: - newFlavourId @@ -403,11 +441,7 @@ definitions: $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/ExtVirtualLinkData" extManagedVirtualLinks: description: > - Information about external VLs to connect the VNF to. - 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. + Information about external VLs to connect the VNF to. See note. type: array items: $ref: "#/definitions/ExtManagedVirtualLinkData" @@ -431,13 +465,19 @@ definitions: $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/KeyValuePairs" TerminateVnfRequest: + description: > + This type represents request parameters for the "Terminate VNF" operation. + * NOTE: In case of forceful termination, the VNF instance is terminated immediately. + If the VNF is still in service, this can adversely impact the network service, + and therefore, the EM needs to determine if forceful termination is applicable + in the particular situation. type: object required: - terminationType properties: terminationType: description: > - Indicates the type of termination is requested. + Indicates the type of termination is requested. See note. Permitted values: * FORCEFUL: The VNFM will shut down the VNF and release the resources immediately after accepting the request. * GRACEFUL: The VNFM will first arrange to take the VNF out of service after accepting the request. Once the @@ -494,6 +534,13 @@ definitions: OperateVnfRequest: description: > This type represents request parameters for the "Operate VNF" operation. + * 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" 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 has been set to "FORCEFUL", when the "changeStateTo" attribute is equal + to "STOPPED" and the "stopType" attribute is absent. type: object required: - changeStateTo @@ -512,13 +559,7 @@ definitions: $ref: "../../../definitions/SOL002SOL003VNFLifecycleManagement_def.yaml#/definitions/VnfOperationalStateType" stopType: description: > - It signals whether forceful or graceful stop is requested. - 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" 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 has been set to "FORCEFUL", when the - "changeStateTo" attribute is equal to "STOPPED" and the "stopType" attribute is absent. + It signals whether forceful or graceful stop is requested. See note type: string enum: - FORCEFUL @@ -526,13 +567,7 @@ definitions: 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. - 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" 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 has been set to "FORCEFUL", when the - "changeStateTo" attribute is equal to "STOPPED" and the "stopType" attribute is absent. + before stopping the VNF. See note. type: integer additionalParams: description: > @@ -560,13 +595,18 @@ definitions: description: > Additional input parameters for the instantiation process, specific to the VNF being instantiated, as declared in the VNFD as part of - "ChangeExtVnfConnectivityOpConfig".". + "ChangeExtVnfConnectivityOpConfig". $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/KeyValuePairs" ChangeCurrentVnfPkgRequest: description: > This type represents request parameters for the "Change current VNF package" operation to replace the VNF package on which a VNF instance is based. + * NOTE: 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. type: object required: - vnfdId @@ -584,11 +624,7 @@ definitions: $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/ExtVirtualLinkData" extManagedVirtualLinks: description: > - Information about internal VLs that are managed by other entities than the VNFM. - The indication of externally-managed internal VLs is needed in case networks have been pre-configured for use - with certain VNFs, for instance to ensure that these networks have certain properties such as security or - acceleration features, or to address particular network topologies. The present document assumes that - externally-managed internal VLs are managed by the NFVO and created towards the VIM. + Information about internal VLs that are managed by other entities than the VNFM. See note. type: array items: $ref: "#/definitions/ExtManagedVirtualLinkData" @@ -616,7 +652,6 @@ definitions: i.e. modifications to a resource representation based on the "VnfInstance" data type. The attributes of "VnfInstance" that can be modified according to the provisions in clause 5.5.2.2 are included in the "VnfInfoModificationRequest" data type. - The "VnfInfoModificationRequest" data type shall comply with the provisions defined in table 5.5.2.12-1. type: object properties: vnfInstanceName: @@ -652,7 +687,23 @@ definitions: vnfcInfoModifications: description: > Modifications of certain entries in the "vnfcInfo" attribute array in the - "instantiatedVnfInfo" attribute of "VnfInstance"." to be used as "newList" as defined below this table. + "instantiatedVnfInfo" attribute of "VnfInstance" to be used as "newList" as defined below this table. + The following provisions shall apply when modifying an attribute that is an array of objects of type + "VnfcInfo" by supplying an array of objects of type "VnfcInfoModifications". + Assumptions: + 1) "oldList" is the "VnfcInfo" array to be modified and "newList" is the "VnfcInfoModifications" + array that contains the changes. + 2) "oldEntry" is an entry in "oldList" and "newEntry" is an entry in "newList". + 3) A "newEntry" has a "corresponding entry" if there exists an "oldEntry" that has the same content + of the "id" attribute as the "newEntry"; a "newEntry" has no corresponding entry if no such "oldEntry" exists. + 4) In any array of "VnfcInfo" resp. "VnfcInfoModifications" structures, the content of "id" is unique + (i.e. there are no two entries with the same content of "id"). + Provisions: + 1) For each "newEntry" in "newList" that has no corresponding entry in "oldList", + the "oldList" array shall be modified by adding that "newEntry". + 2) For each "newEntry" in "newList" that has a corresponding "oldEntry" in "oldList", + the value of "oldEntry" shall be updated with the content of "newEntry" as specified for + the data type of "newEntry (refer to clause 5.5.3.24 for the data type "VnfcInfoModifications"). type: array items: $ref: "../../../definitions/SOL002SOL003VNFLifecycleManagement_def.yaml#/definitions/VnfcInfoModifications" @@ -713,14 +764,14 @@ definitions: description: | This type represents request parameters for the creation of an "Individual VNF snapshot" resource which can be populated with content obtained by invoking the "Create VNF snapshot" LCM operation or extracted from a VNF - snapshot package. It shall comply with the provisions defined in table 5.5.2.20-1. + snapshot package. + * NOTE: The present attribute shall be provided if the "Individual VNF snapshot" resource + is requested to be created and be filled from a VNF snapshot package extraction. type: object properties: vnfSnapshotPkgId: description: | - Identifier of the VNF snapshot package information held by the NFVO. - The present attribute shall be provided if the "Individual VNF snapshot" resource is requested to be created - and be filled from a VNF snapshot package extraction. + Identifier of the VNF snapshot package information held by the NFVO. See note. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" VnfSnapshotInfo: @@ -814,17 +865,27 @@ definitions: VnfcSnapshotInfo: description: > This type represents a VNFC snapshot. + * 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 - vnfcInstanceId - - triggeredAt - - vnfcInfo + - creationStartedAt + - vnfcResourceInfoId properties: 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 attribute also identifies the compute snapshot image associated + to this VNFC snapshot within the context of a referred VNF snapshot. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" vnfcInstanceId: description: > @@ -848,10 +909,7 @@ definitions: $ref: "../../../definitions/SOL002SOL003VNFLifecycleManagement_def.yaml#/definitions/VnfcInfo" 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". + Reference to a compute snapshot resource. See note 1. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/ResourceHandle" storageSnapshotResources: description: > @@ -863,14 +921,12 @@ definitions: storageResourceId: description: > Reference to the "VirtualStorageResourceInfo" structure in the "VnfInstance" structure that represents - the virtual storage resource. + 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/SOL002SOL003_def.yaml#/definitions/IdentifierInVnf" storageSnapshotResource: description: > - Reference to a storage snapshot resource. 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". + Reference to a storage snapshot resource. See note 2. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/ResourceHandle" userDefinedData: description: > @@ -890,6 +946,10 @@ definitions: - GRACEFUL ExtManagedVirtualLinkData: + description: > + This type represents an externally-managed internal VL. + * NOTE: The information about the VIM connection referenced by the VIM connection id is known to the VNFM. + Moreover, the identifier of the VIM connection provides scope to the resourceId. type: object required: - id @@ -910,7 +970,7 @@ definitions: description: > Identifier of the VIM connection to manage this resource. This attribute shall only be supported and present if VNF-related - resource management in direct mode is applicable. + resource management in direct mode is applicable. See note. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" resourceProviderId: description: > @@ -964,12 +1024,16 @@ 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 - vduId - computeResource - - vnfcCpInfo properties: id: description: > @@ -977,7 +1041,7 @@ definitions: $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/IdentifierInVnf" vduId: description: > - Reference to the applicable VDU in the VNFD. + Reference to the applicable VDU in the VNFD. See note 1. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/IdentifierInVnfd" vnfdId: description: > @@ -1004,11 +1068,6 @@ definitions: vnfcCpInfo: description: > All the CPs of the VNFC instance. - Shall be present when that particular CP of the VNFC instance is exposed as an external CP of the VNF instance - or is connected to an external CP of the VNF instance. - A VNFC CP is "connected to" an external CP if the VNFC CP is connected to an internal VL that exposes an external CP. - A VNFC CP is "exposed as" an external CP if it is connected directly to an external VL. - May be present otherwise. type: array items: type: object @@ -1023,28 +1082,34 @@ definitions: $ref: "../../../definitions/SOL002SOL003_def.yaml#/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/SOL002SOL003_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 (see note) and shall be absent otherwise. - - NOTE: 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. + the VNF instance or connected to an external CP of the VNF instance (see note 2) and shall be absent otherwise. $ref: "../../../definitions/SOL002SOL003_def.yaml#/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/SOL002SOL003VNFLifecycleManagement_def.yaml#/definitions/CpProtocolInfo" vnfLinkPortId: description: > - Identifier of the "VnfLinkPortInfo" 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 "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) + of the VNF instance and shall be absent otherwise. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/IdentifierInVnf" + 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. + $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/KeyValuePairs" metadata: description: > Metadata about this CP. @@ -1228,6 +1293,11 @@ definitions: description: > This type provides information about added, deleted, modified and temporary VLs, and added or removed VNF link ports. + + NOTE: When signalling the addition (LINK_PORT_ADDED) or removal (LINK_PORT_REMOVED) of VNF link ports, + the "networkResource" attribute refers to the affected virtual link instance, not the link port + instance. The resource handles of the affected VNF link ports can be found by dereferencing the + identifiers in the "vnfLinkPortIds" attribute. type: object required: - id @@ -1238,7 +1308,7 @@ definitions: id: description: > Identifier of the virtual link instance, identifying the applicable - "vnfVirtualLinkResourceInfo" entry in the "VnfInstance" data type. + "vnfVirtualLinkResourceInfo" or "extManagedVirtualLinkInfo" entry in the "VnfInstance" data type. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/IdentifierInVnf" vnfVirtualLinkDescId: description: > @@ -1277,24 +1347,18 @@ definitions: description: > Reference to the VirtualNetwork resource. Detailed information is (for new and modified resources) or has been (for removed - resources) available from the VIM. - When signalling the addition (LINK_PORT_ADDED) or removal (LINK_PORT_REMOVED) of VNF link ports, the - "networkResource" attribute refers to the affected virtual link instance, not the link port instance. - The resource handles of the affected VNF link ports can be found by dereferencing the identifiers in - the "vnfLinkPortIds" attribute. + resources) available from the VIM. See note. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/ResourceHandle" vnfLinkPortIds: description: > - Identifiers of the link ports of the affected VL (reference to the vnfLinkPortInfo) related to the change. - Each identifier references a "VnfLinkPortInfo" structure. - Shall be set when changeType is equal to "LINK_PORT_ADDED" or "LINK_PORT_REMOVED", and the related - “VnfLinkPortInfo” structures are present (case "added") or have been present (case "removed") in the - “VnfVirtualLinkResourceInfo” or "ExtManagedVirtualLinkInfo" structures that are represented by the - "vnfVirtualLinkResourceInfo" or "extManagedVirtualLinkInfo" attribute in the "VnfInstance" structure. - When signalling the addition (LINK_PORT_ADDED) or removal (LINK_PORT_REMOVED) of VNF link ports, the - "networkResource" attribute refers to the affected virtual link instance, not the link port instance. - The resource handles of the affected VNF link ports can be found by dereferencing the identifiers in the - "vnfLinkPortIds" attribute. + Identifiers of the link ports of the affected VL related to the change. Each identifier references a + "VnfLinkPortInfo" structure. + + Shall be set when changeType is equal to "LINK_PORT_ADDED" or "LINK_PORT_REMOVED", and the related + "VnfLinkPortInfo" structures are present (case "added") or have been present (case "removed") in the + "VnfVirtualLinkResourceInfo" or "ExtManagedVirtualLinkInfo" structures that are represented by the + "vnfVirtualLinkResourceInfo" or "extManagedVirtualLinkInfo" attribute in the "VnfInstance" structure. + See note. type: array items: $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/IdentifierInVnfd" @@ -1302,7 +1366,8 @@ definitions: 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. + "metadata" attribute of the applicable "VnfVirtualLinkResourceInfo" structure + if such structure is referenced by the "id" attribute and it has metadata. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/KeyValuePairs" AffectedVirtualStorage: @@ -1363,6 +1428,22 @@ definitions: description: > This type represents a VNF lifecycle management operation occurrence. Shall be set to the value of the "id" attribute in the "Grant" representing the associated "Individual Grant", if such grant exists. + * NOTE 1: This allows the API consumer to obtain the information contained in the latest "result" + notification if it has not received it due to an error or a wrongly configured subscription filter. + * NOTE 2: Not more than one of changedInfo and modificationsTriggeredByVnfPkgChange shall be present. + * NOTE 3: For a particular affected VL, there shall be as many "AffectedVirtualLink" entries as needed + for signalling the different types of changes, i.e. one per virtual link and change type. + For instance, in the case of signaling affected VL instances involving the addition of a + particular VL instance with links ports, one "AffectedVirtualLink" entry signals the addition + of the VL by using the "changeType" attribute of "AffectedVirtualLink" structure equal to "ADDED", + and another "AffectedVirtualLink" entry signals the addition of VNF link ports of the VL by using the + "changeType" equal to "LINK_PORT_ADDED". + * NOTE 4: A coordination action has timed out if the VNFM 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 5: 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" and "ROLLED_BACK". type: object oneOf: - required: @@ -1422,8 +1503,8 @@ 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 following mapping between operationType and the - data type of this attribute shall apply: + operation. In addition, the provisions in clause 5.7 shall apply. + The following mapping between operationType and the data type of this attribute shall apply: * INSTANTIATE: InstantiateVnfRequest * SCALE: ScaleVnfRequest * SCALE_TO_LEVEL: ScaleVnfToLevelRequest @@ -1466,64 +1547,46 @@ definitions: affectedVnfcs: description: > Information about VNFC instances that were affected during the - lifecycle operation. - This allows the API consumer to obtain the information contained in - the latest "result" notification if it has not received it due to an - error or a wrongly configured subscription filter. + lifecycle operation. See note 1. type: array items: $ref: "#/definitions/AffectedVnfc" affectedVirtualLinks: description: > Information about VL instances that were affected during the - lifecycle operation. - This allows the API consumer to obtain the information contained in - the latest "result" notification if it has not received it due to an - error or a wrongly configured subscription filter. - For a particular affected VL, there shall be as many "AffectedVirtualLink" - entries as needed for signalling the different types of changes, i.e., - one per virtual link and change type. For instance, in the case of - signaling affected VL instances involving the addition of a particular VL - instance with links ports, one "AffectedVirtualLink" entry signals the - addition of the VL by using the "changeType" attribute of "AffectedVirtualLink" - structure equal to "ADDED", and another "AffectedVirtualLink" entry signals - the addition of VNF link ports of the VL by using the "changeType" equal to - "LINK_PORT_ADDED". + lifecycle operation. See note 1 and note 3. type: array items: $ref: "#/definitions/AffectedVirtualLink" affectedExtLinkPorts: description: > - Information about external VNF link ports that were affected during the lifecycle operation. This allows - the API consumer to obtain the information contained in the latest "result" notification if it has not - received it due to an error or a wrongly configured subscription filter. + Information about external VNF link ports that were affected during the lifecycle operation. + See note 1. type: array items: $ref: "#/definitions/AffectedExtLinkPort" affectedVirtualStorages: description: > Information about virtualised storage instances that were affected - during the lifecycle operation. - This allows the API consumer to obtain the information contained - in the latest "result" notification if it has not received it due to - an error or a wrongly configured subscription filter. + during the lifecycle operation. See note 1. type: array items: $ref: "#/definitions/AffectedVirtualStorage" changedInfo: description: > Information about the changed VNF instance information, including - VNF configurable properties, if applicable. - This allows the NFVO to obtain the information contained in the - latest "result" notification if it has not received it due to an - error or a wrongly configured subscription filter. + VNF configurable properties, if applicable. See note 1 and note 2. $ref: "#/definitions/VnfInfoModifications" + affectedVipCps: + description: > + Information about virtual IP CP instances that were affected during + the execution of the lifecycle management operation. + type: array + items: + $ref: "../../../definitions/SOL002SOL003VNFLifecycleManagement_def.yaml#/definitions/AffectedVipCp" changedExtConnectivity: description: > - Information about changed external connectivity, if applicable. - This allows the NFVO to obtain the information contained in the - latest "result" notification if it has not received it due to an - error or a wrongly configured subscription filter. + Information about changed external connectivity, if applicable. See note 1. type: array items: $ref: "../../../definitions/SOL002SOL003VNFLifecycleManagement_def.yaml#/definitions/ExtVirtualLinkInfo" @@ -1531,15 +1594,110 @@ definitions: 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". - This allows the API consumer to obtain the information contained in the latest "result" notification if it has - not received it due to an error or a wrongly configured subscription filter. - Not more than one of changedInfo and modificationsTriggeredByVnfPkgChange shall be present. + See note 1 and note 2. $ref: "../../../definitions/SOL002SOL003VNFLifecycleManagement_def.yaml#/definitions/ModificationsTriggeredByVnfPkgChange" vnfSnapshotInfoId: description: > Identifier of the "individual VNF snapshot" resource. Shall be present if applicable to the type of LCM operation, i.e., if the value of the "operation" attribute is either "CREATE_SNAPSHOT" or "REVERT_TO_SNAPSHOT". $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" + lcmCoordinations: + description: > + Information about LCM coordination actions (see clause 10) related to this LCM operation occurrence. + 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 10.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 10.4.2.3.1). + $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" + coordinationActionName: + description: > + Indicator of the actual coordination action. + $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" + coordinationResult: + description: > + The result of executing the coordination action which also implies the action to + be performed by the VNFM as the result of this coordination. See note 4. + $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/LcmCoordResultType" + startTime: + description: > + The time when the VNFM has received the confirmation that the coordination action has been started. + $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/DateTime" + endTime: + description: > + The end time when the VNFM 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 4) and + shall be absent if the coordination is ongoing. + $ref: "../../../definitions/SOL002SOL003_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. EM) + - VNF: coordination with the VNF instance + type: string + enum: + - MGMT + - VNF + 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/SOL002SOL003_def.yaml#/definitions/DateTime" + rejectedLcmCoordinations: + description: > + Information about LCM coordination actions (see clause 10) that were rejected by 503 error which + means they will be tried again after a delay. See note 5. + type: object + required: + - coordinationActionName + - rejectionTime + - endpointType + - delay + properties: + coordinationActionName: + description: > + Indicator of the actual coordination action. + $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" + rejectionTime: + description: > + The time when the VNFM has received the 503 response that rejects the actual coordination. + $ref: "../../../definitions/SOL002SOL003_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. EM) + - VNF: coordination with the VNF instance + type: string + enum: + - MGMT + - VNF + delay: + description: > + The end of the delay period, as calculated from the startTime and "Retry-After" header. + $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/DateTime" + warnings: + description: > + Warning messages that were generated while the operation was executing. + + If the operation has included 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. @@ -1633,79 +1791,70 @@ definitions: "VnfInfoModificationRequest" data structure, and additional attributes of the "VnfInstance" data structure that were modified implicitly e.g. when modifying the referenced VNF package. + * NOTE: If present, this attribute (which depends on the value of the "vnfdId" attribute) + was modified implicitly following a request to modify the "vnfdId" attribute, by + copying the value of this attribute from the VNFD in the VNF Package identified + by the "vnfdId" attribute. type: object properties: vnfInstanceName: description: > If present, this attribute signals modifications of the - "vnfInstanceName" attribute in "VnfInstance". + "vnfInstanceName" attribute in "VnfInstance" as defined in clause 5.5.2.12.. type: string vnfInstanceDescription: description: > If present, this attribute signals modifications of the - "vnfInstanceDescription" attribute in "VnfInstance". + "vnfInstanceDescription" attribute in "VnfInstance", as defined in clause 5.5.2.12.. type: string vnfConfigurableProperties: description: > If present, this attribute signals modifications of the - "vnfConfigurableProperties" attribute in "VnfInstance". + "vnfConfigurableProperties" attribute in "VnfInstance" as defined in clause 5.5.2.12. + In addition, the provisions in clause 5.7 shall apply.. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/KeyValuePairs" metadata: description: > If present, this attribute signals modifications of the "metadata" - attribute in "VnfInstance". + attribute in "VnfInstance" , as defined in clause 5.5.2.12.. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/KeyValuePairs" extensions: description: > If present, this attribute signals modifications of the "extensions" - attribute in "VnfInstance". + attribute in "VnfInstance", as defined in clause 5.5.2.12. + In addition, the provisions in clause 5.7 shall apply.. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/KeyValuePairs" vnfdId: description: > If present, this attribute signals modifications of the "vnfdId" - attribute in "VnfInstance". + attribute in "VnfInstance", as defined in clause 5.5.2.12.. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" vnfProvider: description: > If present, this attribute signals modifications of the - "vnfProvider" attribute in "VnfInstance". - If present, this attribute (which depends on the value of the - "vnfPkgId" attribute) was modified implicitly following a request to - modify the "vnfPkgId" attribute, by copying the value of this - attribute from the VNFD in the VNF Package identified by the - "vnfPkgId” attribute. + "vnfProvider" attribute in "VnfInstance". See note. type: string vnfProductName: description: > If present, this attribute signals modifications of the - "vnfProductName" attribute in "VnfInstance". - If present, this attribute (which depends on the value of the - "vnfPkgId" attribute) was modified implicitly following a request to - modify the "vnfPkgId" attribute, by copying the value of this - attribute from the VNFD in the VNF Package identified by the - "vnfPkgId” attribute. + "vnfProductName" attribute in "VnfInstance". See note. type: string vnfSoftwareVersion: description: > If present, this attribute signals modifications of the - "vnfSoftwareVersion" attribute in "VnfInstance". + "vnfSoftwareVersion" attribute in "VnfInstance". See note. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Version" vnfdVersion: description: > If present, this attribute signals modifications of the - "vnfdVersion" attribute in "VnfInstance". - If present, this attribute (which depends on the value of the - "vnfdId" attribute) was modified implicitly following a request to - modify the "vnfdId" attribute, by copying the value of this - attribute from the VNFD in the VNF Package identified by the - "vnfdId” attribute. + "vnfdVersion" attribute in "VnfInstance". See note. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Version" vnfcInfoModifications: description: > If present, this attribute signals modifications of certain entries in the "vnfcInfo" attribute array in the "instantiatedVnfInfo" attribute of "VnfInstance", as defined - in clause 5.5.2.12 + in clause 5.5.2.12. type: array items: $ref: "../../../definitions/SOL002SOL003VNFLifecycleManagement_def.yaml#/definitions/VnfcInfoModifications" \ No newline at end of file diff --git a/src/SOL002/VNFLifecycleManagementNotification/VNFLifecycleManagementNotification.yaml b/src/SOL002/VNFLifecycleManagementNotification/VNFLifecycleManagementNotification.yaml index b84db5bb94d7ac4fadbc812e095f23ca5d748369..dfc2f2e4c77f5b7640e95eedd7e3cfff1f929b06 100644 --- a/src/SOL002/VNFLifecycleManagementNotification/VNFLifecycleManagementNotification.yaml +++ b/src/SOL002/VNFLifecycleManagementNotification/VNFLifecycleManagementNotification.yaml @@ -4,37 +4,40 @@ info: title: SOL002 - VNF Lifecycle Management Notification interface description: | SOL002 - VNF 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 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/SOL002-SOL003/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 002 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/03.03.01_60/gs_NFV-SOL002v030301p.pdf + description: ETSI GS NFV-SOL 002 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/03.05.01_60/gs_NFV-SOL002v030501p.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_VnfLcmOperationOccurrenceNotification: + /URI_is_provided_by_the_client_when_creating_the_subscription-VnfLcmOperationOccurrenceNotification: parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization get: description: | The GET method allows the server to test the notification endpoint that is provided by the API consumer, - e.g. during subscription. + e.g. during subscription. See clause 5.4.20.3.2. responses: "204": - $ref: '#/components/responses/VNFLCMNotification.Get' + $ref: '#/components/responses/VNFLCMNotification.Get.204' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -52,16 +55,15 @@ paths: post: description: | - Notify 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. + previously created an "Individual subscription" resource with a matching filter. See clause 5.4.20.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType requestBody: $ref: '#/components/requestBodies/VnfLcmOperationOccurrenceNotification' responses: "204": - $ref: '#/components/responses/VNFLCMNotification.Post' + $ref: '#/components/responses/VNFLCMNotification.Post.204' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -77,17 +79,17 @@ paths: "503": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503 - /URI-is-provided-by-the-client-when-creating-the-subscription_VnfIdentifierCreationNotification: + /URI_is_provided_by_the_client_when_creating_the_subscription-VnfIdentifierCreationNotification: parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization get: description: | The GET method allows the server to test the notification endpoint that is provided by the API consumer, - e.g. during subscription. + e.g. during subscription. See clause 5.4.20.3.2. responses: "204": - $ref: '#/components/responses/VNFLCMNotification.Get' + $ref: '#/components/responses/VNFLCMNotification.Get.204' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -105,16 +107,15 @@ paths: post: description: | - Notify 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. + previously created an "Individual subscription" resource with a matching filter. See clause 5.4.20.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType requestBody: $ref: '#/components/requestBodies/VnfIdentifierCreationNotification' responses: "204": - $ref: '#/components/responses/VNFLCMNotification.Post' + $ref: '#/components/responses/VNFLCMNotification.Post.204' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -130,17 +131,17 @@ paths: "503": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503 - /URI-is-provided-by-the-client-when-creating-the-subscription_VnfIdentifierDeletionNotification: + /URI_is_provided_by_the_client_when_creating_the_subscription-VnfIdentifierDeletionNotification: parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization get: description: | The GET method allows the server to test the notification endpoint that is provided by the API consumer, - e.g. during subscription. + e.g. during subscription. See clause 5.4.20.3.2. responses: "204": - $ref: '#/components/responses/VNFLCMNotification.Get' + $ref: '#/components/responses/VNFLCMNotification.Get.204' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -158,16 +159,15 @@ paths: post: description: | - Notify 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. + previously created an "Individual subscription" resource with a matching filter. See clause 5.4.20.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType requestBody: $ref: '#/components/requestBodies/VnfIdentifierDeletionNotification' responses: "204": - $ref: '#/components/responses/VNFLCMNotification.Post' + $ref: '#/components/responses/VNFLCMNotification.Post.204' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -213,9 +213,9 @@ components: required: true responses: - VNFLCMNotification.Get: + VNFLCMNotification.Get.204: description: | - 201 NO CONTENT + 204 NO CONTENT Shall be returned to indicate the notification endpoint has been tested successfully. The response body shall be empty. headers: @@ -236,7 +236,7 @@ components: type: string content: {} - VNFLCMNotification.Post: + VNFLCMNotification.Post.204: description: | 204 NO CONTENT Shall be returned when the notification has been delivered successfully. The response body shall be empty. diff --git a/src/SOL002/VNFLifecycleManagementNotification/definitions/SOL002VNFLifecycleManagementNotification_def.yaml b/src/SOL002/VNFLifecycleManagementNotification/definitions/SOL002VNFLifecycleManagementNotification_def.yaml index 0d3f2600f0ee0824c8ce65cb347e8141a0e1f5cc..e7bc25ca7ab2e101b12202ddfc0a4e9e34b19e9c 100644 --- a/src/SOL002/VNFLifecycleManagementNotification/definitions/SOL002VNFLifecycleManagementNotification_def.yaml +++ b/src/SOL002/VNFLifecycleManagementNotification/definitions/SOL002VNFLifecycleManagementNotification_def.yaml @@ -34,6 +34,18 @@ definitions: been executed. The new state shall be set in the "Individual VNF LCM operation occurrence" resource before the notification about the state change is sent. + * NOTE 1: Shall be present if the "notificationStatus" is set to "RESULT", the "verbosity" attribute is set + to "FULL" and the operation has performed any resource modification. Shall be absent otherwise. + This attribute contains information about the cumulative changes to virtualised resources that + were performed so far by the VNF LCM operation occurrence and by any of the error handling + procedures for that operation occurrence. + NOTE 2: For a particular affected VL, there shall be as many "AffectedVirtualLink" entries as needed + for signalling the different types of changes, i.e. one per virtual link and change type. + For instance, in the case of signaling affected VL instances involving the addition of a particular + VL instance with links ports, one "AffectedVirtualLink" entry signals the addition of the VL by using + the "changeType" attribute of "AffectedVirtualLink" structure equal to "ADDED", and another + "AffectedVirtualLink" entry signals the addition of VNF link ports of the VL by using the + "changeType" equal to "LINK_PORT_ADDED". type: object required: - id @@ -116,49 +128,28 @@ definitions: affectedVnfcs: description: > Information about VNFC instances that were affected during the - lifecycle operation. - Shall be present if the "notificationStatus" is set to "RESULT" and - the operation has performed any resource modification. Shall be - absent otherwise. This attribute contains information about the - cumulative changes to virtualised resources that were performed so - far by the VNF LCM operation occurrence and by any of the error - handling procedures for that operation occurrence. + lifecycle operation. See note 1. type: array items: $ref: "../../VNFLifecycleManagement/definitions/SOL002VNFLifecycleManagement_def.yaml#/definitions/AffectedVnfc" affectedVirtualLinks: description: > Information about VL instances that were affected during the - lifecycle operation. - Shall be present if the "notificationStatus" is set to "RESULT" and - the operation has performed any resource modification. Shall be - absent otherwise. This attribute contains information about the - cumulative changes to virtualised resources that were performed so - far by the VNF LCM operation occurrence and by any of the error - handling procedures for that operation occurrence. + lifecycle operation. See note 1 and note 2. type: array items: $ref: "../../VNFLifecycleManagement/definitions/SOL002VNFLifecycleManagement_def.yaml#/definitions/AffectedVirtualLink" affectedExtLinkPorts: description: > Information about external VNF link ports that were affected during the lifecycle operation. - Shall be present if the "notificationStatus" is set to "RESULT", the "verbosity" attribute is set to "FULL" - and the operation has performed any resource modification. Shall be absent otherwise. This attribute contains - information about the cumulative changes to virtualised resources that were performed so far by the VNF LCM - operation occurrence and by any of the error handling procedures for that operation occurrence. + See note 1. type: array items: $ref: "../../VNFLifecycleManagement/definitions/SOL002VNFLifecycleManagement_def.yaml#/definitions/AffectedExtLinkPort" affectedVirtualStorages: description: > Information about virtualised storage instances that were affected - during the lifecycle operation. - Shall be present if the "notificationStatus" is set to "RESULT" and - the operation has performed any resource modification. Shall be - absent otherwise. This attribute contains information about the - cumulative changes to virtualised resources that were performed so - far by the VNF LCM operation occurrence and by any of the error - handling procedures for that operation occurrence. + during the lifecycle operation. See note 1. type: array items: $ref: "../../VNFLifecycleManagement/definitions/SOL002VNFLifecycleManagement_def.yaml#/definitions/AffectedVirtualStorage" @@ -171,6 +162,18 @@ definitions: including VNF configurable properties. Shall be absent otherwise. $ref: "../../VNFLifecycleManagement/definitions/SOL002VNFLifecycleManagement_def.yaml#/definitions/VnfInfoModifications" + affectedVipCps: + description: > + Information about virtual IP CP instances that were affected during the execution + of the lifecycle management operation, if this notification represents the result + of a lifecycle management operation occurrence. + Shall be present if the "notificationStatus" is set to "RESULT", the "verbosity" + attribute is set to "FULL" and the operation has made any changes to the VIP CP + instances of the VNF instance. Shall be absent otherwise. Only information about + VIP CP instances that have been added, deleted or modified shall be provided. + type: array + items: + $ref: "../../../definitions/SOL002SOL003VNFLifecycleManagement_def.yaml#/definitions/AffectedVipCp" changedExtConnectivity: description: > Information about changed external connectivity, if this diff --git a/src/SOL002/VNFPerformanceManagement/VNFPerformanceManagement.yaml b/src/SOL002/VNFPerformanceManagement/VNFPerformanceManagement.yaml index 82129f94231545222fc5b58588697244b83f0ab7..a2e55c655d45f0367c6b781404f52deba0826c38 100644 --- a/src/SOL002/VNFPerformanceManagement/VNFPerformanceManagement.yaml +++ b/src/SOL002/VNFPerformanceManagement/VNFPerformanceManagement.yaml @@ -3,10 +3,14 @@ openapi: 3.0.2 info: title: SOL002 - VNF Perfomance Management interface description: | - SOL002 - VNF 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. + SOL002 - VNF 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. In case of + discrepancies the published ETSI Group Specification takes precedence. + Please report bugs to https://forge.etsi.org/rep/nfv/SOL002-SOL003/issues + contact: name: NFV-SOL WG license: @@ -15,8 +19,8 @@ info: version: 2.1.0-impl:etsi.org:ETSI_NFV_OpenAPI:1 externalDocs: - description: ETSI GS NFV-SOL 002 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/03.03.01_60/gs_NFV-SOL002v030301p.pdf + description: ETSI GS NFV-SOL 002 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/03.05.01_60/gs_NFV-SOL002v030501p.pdf servers: - url: http://127.0.0.1/vnfpm/v2 @@ -32,7 +36,7 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization get: description: | - The client 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 6.4.2.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType @@ -44,7 +48,7 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/nextpage_opaque_marker responses: "200": - $ref: '#/components/responses/PmJobs.Get' + $ref: '#/components/responses/PmJobs.Get.200' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -72,8 +76,7 @@ paths: post: description: | - The POST method creates a PM job. As the result of successful executing this method, a new "Individual PM job" - resource as defined in clause 6.4.3 shall have been created. + The POST method creates a PM job. See clause 6.4.2.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType @@ -81,7 +84,7 @@ paths: $ref: '#/components/requestBodies/PmJobCreationRequest' responses: "201": - $ref: '#/components/responses/PmJobs.Post' + $ref: '#/components/responses/PmJobs.Post.201' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -114,12 +117,12 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization get: description: | - The client 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 6.4.3.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept responses: "200": - $ref: '#/components/responses/IndividualPmJob.Get' + $ref: '#/components/responses/IndividualPmJob.Get.200' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -147,11 +150,10 @@ paths: delete: description: | - This method terminates an individual PM job. 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 6.4.3.3.5. responses: "204": - $ref: '#/components/responses/IndividualPmJob.Delete' + $ref: '#/components/responses/IndividualPmJob.Delete.204' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -179,14 +181,12 @@ paths: patch: description: | - This method allows to modify an "individual PM job" resource. This method shall follow the provisions specified - in the tables 6.4.3.3.4-1 and 6.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 6.4.3.3.4. requestBody: $ref: '#/components/requestBodies/PmJobModificationRequest' responses: "200": - $ref: '#/components/responses/IndividualPmJob.Patch' + $ref: '#/components/responses/IndividualPmJob.Patch.200' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -224,12 +224,12 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization get: description: | - The client can use this method for reading an individual performance report. + The API consumer can use this method for reading an individual performance report. See clause 6.4.4.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept responses: "200": - $ref: '#/components/responses/IndividualPmJobReport.Get' + $ref: '#/components/responses/IndividualPmJobReport.Get.200' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -261,14 +261,14 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization get: description: | - The client can use this method to query information about thresholds. + The API cosumer can use this method to query information about thresholds. See clause 6.4.5.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/filter - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/nextpage_opaque_marker responses: "200": - $ref: '#/components/responses/Thresholds.Get' + $ref: '#/components/responses/Thresholds.Get.200' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -296,7 +296,7 @@ paths: post: description: | - The POST method can be used by the client to create a threshold. As the result of successfully executing this method, a new "Individual threshold" resource as defined in clause 6.4.6 shall have been created. + The POST method can be used by API consumer to create a threshold. See clause 6.4.5.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType @@ -304,7 +304,7 @@ paths: $ref: '#/components/requestBodies/ThresholdCreationRequest' responses: "201": - $ref: '#/components/responses/Thresholds.Post' + $ref: '#/components/responses/Thresholds.Post.201' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -337,12 +337,12 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization get: description: | - The client can use this method for reading an individual threshold. + The client can use this method for reading an individual threshold. See clause 6.4.6.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept responses: "200": - $ref: '#/components/responses/IndividualThreshold.Get' + $ref: '#/components/responses/IndividualThreshold.Get.200' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -370,13 +370,12 @@ paths: delete: 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 6.4.6.3.5. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept responses: "204": - $ref: '#/components/responses/IndividualThreshold.Delete' + $ref: '#/components/responses/IndividualThreshold.Delete.204' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -404,14 +403,12 @@ paths: patch: description: | - This method allows to modify an "Individual threshold" resource. This method shall follow the provisions - specified in the tables 6.4.6.3.4-1 and 6.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 6.4.6.3.4. requestBody: $ref: '#/components/requestBodies/ThresholdModificationRequest' responses: "200": - $ref: '#/components/responses/IndividualThreshold.Patch' + $ref: '#/components/responses/IndividualThreshold.Patch.200' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -515,7 +512,7 @@ components: required: true responses: - PmJobs.Get: + PmJobs.Get.200: description: | 200 OK Shall be returned when information about zero or more PM jobs was queried successfully. The response body @@ -561,7 +558,7 @@ components: items: $ref: ../../definitions/SOL002SOL003VNFPerformanceManagement_def.yaml#/definitions/PmJob - PmJobs.Post: + PmJobs.Post.201: description: | 201 CREATED Shall be returned when the PM job has been created successfully. The response body shall contain a @@ -600,7 +597,7 @@ components: schema: $ref: ../../definitions/SOL002SOL003VNFPerformanceManagement_def.yaml#/definitions/PmJob - IndividualPmJob.Get: + IndividualPmJob.Get.200: description: | 200 OK Shall be returned when information about an individual PM job has been ueried successfully. The response @@ -631,7 +628,7 @@ components: schema: $ref: ../../definitions/SOL002SOL003VNFPerformanceManagement_def.yaml#/definitions/PmJob - IndividualPmJob.Delete: + IndividualPmJob.Delete.204: description: | 204 NO CONTENT Shall be returned when the PM job has been deleted successfully. The response body shall be empty. @@ -644,7 +641,8 @@ components: 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. + 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: @@ -657,7 +655,7 @@ components: type: string content: {} - IndividualPmJob.Patch: + IndividualPmJob.Patch.200: description: | 200 OK Shall be returned when the request has been processed successfully. The response body shall contain a data @@ -688,7 +686,7 @@ components: schema: $ref: ../../definitions/SOL002SOL003VNFPerformanceManagement_def.yaml#/definitions/PmJobModifications - IndividualPmJobReport.Get: + IndividualPmJobReport.Get.200: description: | 200 OK Shall be returned when information of an individual performance report has been read successfully. @@ -719,11 +717,16 @@ components: schema: $ref: ../../definitions/SOL002SOL003VNFPerformanceManagement_def.yaml#/definitions/PerformanceReport - Thresholds.Get: + Thresholds.Get.200: description: | 200 OK Information about zero or more thresholds was queried successfully. - 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. The response body shall contain in an array the representations of zero or more thresholds, as defined in clause 6.5.2.9. If the VNFM 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. + 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. + The response body shall contain in an array the representations of zero or more thresholds, + as defined in clause 6.5.2.9. If the VNFM 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: The used API version. @@ -733,7 +736,8 @@ components: 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. + 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: @@ -758,10 +762,12 @@ components: items: $ref: ../../definitions/SOL002SOL003VNFPerformanceManagement_def.yaml#/definitions/Threshold - Thresholds.Post: + Thresholds.Post.201: description: | 201 CREATED - Shall be returned when a threshold has been created successfully. The response body shall contain a representation of the created "Individual threshold" resource. The HTTP response shall include a "Location" HTTP header that contains the resource URI of the created resource. + Shall be returned when a threshold has been created successfully. The response body shall contain a + representation of the created "Individual threshold" resource. The HTTP response shall include a + "Location" HTTP header that contains the resource URI of the created resource. headers: Version: description: The used API version. @@ -771,7 +777,8 @@ components: 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. + 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: @@ -794,7 +801,7 @@ components: schema: $ref: ../../definitions/SOL002SOL003VNFPerformanceManagement_def.yaml#/definitions/Threshold - IndividualThreshold.Get: + IndividualThreshold.Get.200: description: | 200 OK Shall be returned when information about an individual threshold has been queried successfully. @@ -825,7 +832,7 @@ components: schema: $ref: ../../definitions/SOL002SOL003VNFPerformanceManagement_def.yaml#/definitions/Threshold - IndividualThreshold.Delete: + IndividualThreshold.Delete.204: description: | 204 NO CONTENT Shall be returned when the threshold was deleted successfully. The response body shall be empty. @@ -838,14 +845,15 @@ components: 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. + 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: {} - IndividualThreshold.Patch: + IndividualThreshold.Patch.200: description: | 200 OK Shall be returned when the request has been processed successfully. The response body shall contain a data diff --git a/src/SOL002/VNFPerformanceManagementNotification/VNFPerformanceManagementNotification.yaml b/src/SOL002/VNFPerformanceManagementNotification/VNFPerformanceManagementNotification.yaml index f176a80b7be0e3332f181bcff0ff63423c67ea27..b4a2d1fc156d2c86203eaa00b00870c1e5d5ba6f 100644 --- a/src/SOL002/VNFPerformanceManagementNotification/VNFPerformanceManagementNotification.yaml +++ b/src/SOL002/VNFPerformanceManagementNotification/VNFPerformanceManagementNotification.yaml @@ -4,10 +4,13 @@ info: title: SOL002 - VNF Performance Management Notification interface description: | SOL002 - VNF 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 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/SOL002-SOL003/issues + contact: name: NFV-SOL WG license: @@ -16,25 +19,25 @@ info: version: 2.1.0-impl:etsi.org:ETSI_NFV_OpenAPI:1 externalDocs: - description: ETSI GS NFV-SOL 002 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/03.03.01_60/gs_NFV-SOL002v030301p.pdf + description: ETSI GS NFV-SOL 002 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/03.05.01_60/gs_NFV-SOL002v030501p.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_PerformanceInformationAvailableNotification': + '/URI_is_provided_by_the_client_when_creating_the_subscription-PerformanceInformationAvailableNotification': parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization get: description: | The GET method allows the server to test the notification endpoint that is provided by the client, - e.g. during subscription. + e.g. during subscription. See clause 6.4.9.3.2. responses: "204": - $ref: '#/components/responses/VNFPMNotification.Get' + $ref: '#/components/responses/VNFPMNotification.Get.204' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -52,16 +55,15 @@ paths: post: description: | - Notify The POST method delivers a notification regarding a performance management event from API producer to an API - consumer. The API consumer shall have previously created an "Individual subscription" resource with a matching filter. + consumer. See clause 6.4.9.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType requestBody: $ref: '#/components/requestBodies/PerformanceInformationAvailableNotification' responses: "204": - $ref: '#/components/responses/VNFPMNotification.Post' + $ref: '#/components/responses/VNFPMNotification.Post.204' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -77,17 +79,17 @@ paths: "503": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/503 - /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/SOL002SOL003_params.yaml#/components/parameters/Version - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization get: description: | The GET method allows the server to test the notification endpoint that is provided by the client, - e.g. during subscription. + e.g. during subscription. See clause 6.4.9.3.2. responses: "204": - $ref: '#/components/responses/VNFPMNotification.Get' + $ref: '#/components/responses/VNFPMNotification.Get.204' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -105,17 +107,15 @@ paths: post: description: | - Notify The POST method delivers a notification regarding a performance management event from API producer to an API - consumer. The API consumer shall have previously created an "Individual subscription" resource with a matching - filter. + consumer. See clause 6.4.9.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType requestBody: $ref: '#/components/requestBodies/ThresholdCrossedNotification' responses: "204": - $ref: '#/components/responses/VNFPMNotification.Post' + $ref: '#/components/responses/VNFPMNotification.Post.204' "400": $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -152,9 +152,9 @@ components: required: true responses: - VNFPMNotification.Get: + VNFPMNotification.Get.204: description: | - 201 NO CONTENT + 204 NO CONTENT Shall be returned to indicate the notification endpoint has been tested successfully. The response body shall be empty. headers: @@ -175,7 +175,7 @@ components: type: string content: {} - VNFPMNotification.Post: + VNFPMNotification.Post.204: description: | 204 NO CONTENT Shall be returned when the notification has been delivered successfully. The response body shall be empty. diff --git a/src/SOL003/APIVersion/APIVersion.yaml b/src/SOL003/APIVersion/APIVersion.yaml index ea0a9cc4a7a49be8aa4f86f520d885b8f5ba5426..b0c11b5cec9cbe94ebb185c6dc11867e0e167bfb 100644 --- a/src/SOL003/APIVersion/APIVersion.yaml +++ b/src/SOL003/APIVersion/APIVersion.yaml @@ -5,11 +5,13 @@ info: title: SOL003 - API version interface description: > SOL003 - 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. + 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/SOL002-SOL003/issues + contact: name: NFV-SOL WG license: @@ -18,8 +20,8 @@ info: version: "1.0.0-impl:etsi.org:ETSI_NFV_OpenAPI:1" externalDocs: - description: ETSI GS NFV-SOL 003 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.03.01_60/gs_NFV-SOL003v030301p.pdf + description: ETSI GS NFV-SOL 003 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.05.01_60/gs_NFV-SOL003v030501p.pdf paths: /vrqan/api_versions: diff --git a/src/SOL003/VNFFaultManagement/VNFFaultManagement.yaml b/src/SOL003/VNFFaultManagement/VNFFaultManagement.yaml index f05b5c103f4a2331cb8a5a2d5912e9be4c0fb456..07d18ac7d05b03362d19b1ce7d2fd848398e47b5 100644 --- a/src/SOL003/VNFFaultManagement/VNFFaultManagement.yaml +++ b/src/SOL003/VNFFaultManagement/VNFFaultManagement.yaml @@ -10,6 +10,7 @@ info: discrepancies the published ETSI Group Specification takes precedence. Please report bugs to https://forge.etsi.org/rep/nfv/SOL002-SOL003/issues + contact: name: NFV-SOL WG license: @@ -18,8 +19,8 @@ info: version: "1.3.0-impl:etsi.org:ETSI_NFV_OpenAPI:1" externalDocs: - description: ETSI GS NFV-SOL 003 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.03.01_60/gs_NFV-SOL003v030301p.pdf + description: ETSI GS NFV-SOL 003 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.05.01_60/gs_NFV-SOL003v030501p.pdf servers: - url: http://127.0.0.1/vnffm/v1 @@ -39,10 +40,7 @@ paths: #SOL003 location: 7.4.2 get: 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 7.4.2.3.2-1 and 7.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 7.4.2.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType @@ -85,9 +83,7 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version get: description: | - The API consumer can use this method to read an individual alarm. - This method shall follow the provisions specified in the tables 7.4.3.3.2-1 and 7.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 7.4.3.3.2. responses: 200: $ref: '#/components/responses/IndividualAlarm.Get.200' @@ -114,10 +110,7 @@ paths: patch: description: | - Acknowledge Alarm. - This method modifies an "Individual alarm" 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 modifies an "Individual alarm" resource. See clause 7.4.3.3.4. requestBody: $ref: '#/components/requestBodies/IndividualAlarmRequest' responses: @@ -136,16 +129,9 @@ paths: 406: $ref: ../../responses/SOL002SOL003_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 "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). - $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/409 + $ref: '#/components/responses/IndividualAlarm.Patch.409' 412: - $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/412 + $ref: '#/components/responses/IndividualAlarm.Patch.412' 422: $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/422 500: @@ -167,38 +153,14 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version post: description: | - Subscribe. - The POST method creates a new subscription. - This method shall follow the provisions specified in the tables 7.4.4.3.1-1 and 7.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 - as defined in clause 7.4.5 shall have been created. This method shall not trigger any notification. - Creation of two "Individual subscription" resources with the same callback URI and the same filter - can result in performance degradation and will provide duplicates of notifications to the NFVO, - and might make sense only in very rare use cases. Consequently, the VNFM may either allow creating - a new "Individual subscription" resource if another "Individual 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 "Individual subscription" resource (in which case it shall return - a "303 See Other" response code referencing the existing "Individual subscription" resource with the - same filter and callback URI). + The POST method creates a new subscription. See clause 7.4.4.3.1. requestBody: $ref: '#/components/requestBodies/FmSubscriptionRequest' responses: 201: $ref: '#/components/responses/Subscriptions.Post.200' 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 VNFM 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. - $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/303 + $ref: '#/components/responses/Subscriptions.Post.303' 400: $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 401: @@ -212,7 +174,7 @@ paths: 406: $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406 422: - $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/422 + $ref: '#/components/responses/Subscriptions.Post.422' 500: $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/500 503: @@ -222,12 +184,8 @@ paths: get: description: | - Query Subscription Information - - - The API consumer can use this method to retrieve the list of active - subscriptions for VNF alarms subscribed by the API consumer. It can be used - e.g. for resynchronization after error situations. + The API consumer can use this method to retrieve the list of active subscriptions for VNF alarms subscribed + by the API consumer. It can be used e.g. for resynchronization after error situations. See clause 7.4.4.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/filter - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/nextpage_opaque_marker @@ -266,11 +224,8 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization get: description: | - Query Subscription Information. - The API consumer can use this method for reading an individual subscription for VNF alarms - subscribed by the API consumer. - This method shall follow the provisions specified in the tables 7.4.5.3.2-1 and 7.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 VNF + alarms subscribed by the API consumer. See clause 7.4.5.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType @@ -300,16 +255,7 @@ paths: delete: description: | - Terminate Subscription. - This method terminates an individual subscription. - This method shall follow the provisions specified in the tables 7.4.5.3.5-1 and 7.4.5.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. + This method terminates an individual subscription. See clause 7.4.5.3.5. responses: 204: $ref: '#/components/responses/IndividualSubscription.Delete.204' @@ -485,7 +431,84 @@ components: application/json: schema: $ref: "../../definitions/SOL002SOL003VNFFaultManagement_def.yaml#/definitions/AlarmModifications" - + + 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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + Subscriptions.Get.200: description: | 200 OK @@ -574,6 +597,94 @@ components: schema: $ref: "../../definitions/SOL002SOL003VNFFaultManagement_def.yaml#/definitions/FmSubscription" + Subscriptions.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 VNFM 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: 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 + Location: + description: | + The resource URI of the created subscription resource. + style: simple + explode: false + schema: + type: string + format: url + + 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 [8], 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 VNFM has + tested the Notification endpoint as described in + clause 7.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: 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/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + IndividualSubscription.Get.200: description: | 200 OK diff --git a/src/SOL003/VNFFaultManagementNotification/VNFFaultManagementNotification.yaml b/src/SOL003/VNFFaultManagementNotification/VNFFaultManagementNotification.yaml index 8e4c1d60d96b18a76e650c0fca3ac659cf5e5072..854815e6ea01b5d1e9f6c53e7faaedf6a3eaf324 100644 --- a/src/SOL003/VNFFaultManagementNotification/VNFFaultManagementNotification.yaml +++ b/src/SOL003/VNFFaultManagementNotification/VNFFaultManagementNotification.yaml @@ -10,6 +10,7 @@ info: discrepancies the published ETSI Group Specification takes precedence. Please report bugs to https://forge.etsi.org/rep/nfv/SOL002-SOL003/issues + contact: name: NFV-SOL WG license: @@ -18,8 +19,8 @@ info: version: 1.3.0-impl:etsi.org:ETSI_NFV_OpenAPI:1 externalDocs: - description: ETSI GS NFV-SOL 003 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.03.01_60/gs_NFV-SOL003v030301p.pdf + description: ETSI GS NFV-SOL 003 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.05.01_60/gs_NFV-SOL003v030501p.pdf servers: - url: http://127.0.0.1/callback/v1 @@ -29,18 +30,15 @@ paths: ############################################################################### # Notification endpoint AlarmNotification # ############################################################################### - /URI-is-provided-by-the-client-when-creating-the-subscription-AlarmNotification: + /URI_is_provided_by_the_client_when_creating_the_subscription-AlarmNotification: #SOL003 location: 7.4.6 parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version post: description: | - Notify. - The POST method notifies a VNF alarm or that the alarm list has been rebuilt. - 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 7.4.6.3.1-1 and 7.4.6.3.1-2 - for URI query parameters, request and response data structures, and response codes. + The POST method notifies a VNF alarm 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 7.4.6.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType requestBody: @@ -65,10 +63,8 @@ paths: get: description: | - The GET method allows the API producer to test the notification endpoint that is provided by the API consumer, - e.g. during subscription. - This method shall follow the provisions specified in the tables 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. + 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 7.4.6.3.2. responses: 204: $ref: '#/components/responses/AlarmNotification.Get.204' @@ -90,18 +86,15 @@ paths: ############################################################################### # Notification endpoint AlarmClearedNotification # ############################################################################### - /URI-is-provided-by-the-client-when-creating-the-subscription-AlarmClearedNotification: + /URI_is_provided_by_the_client_when_creating_the_subscription-AlarmClearedNotification: #SOL003 location: 7.4.6 parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version post: description: | - Notify. - The POST method notifies a VNF alarm or that the alarm list has been rebuilt. - 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 7.4.6.3.1-1 and 7.4.6.3.1-2 - for URI query parameters, request and response data structures, and response codes. + The POST method notifies a VNF alarm 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 7.4.6.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType requestBody: @@ -126,10 +119,8 @@ paths: get: description: | - The GET method allows the API producer to test the notification endpoint that is provided by the API consumer, - e.g. during subscription. - This method shall follow the provisions specified in the tables 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. + 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 7.4.6.3.2. responses: 204: $ref: '#/components/responses/AlarmClearedNotification.Get.204' @@ -151,18 +142,15 @@ paths: ############################################################################### # Notification endpoint AlarmListRebuiltNotification # ############################################################################### - /URI-is-provided-by-the-client-when-creating-the-subscription-AlarmListRebuiltNotification: + /URI_is_provided_by_the_client_when_creating_the_subscription-AlarmListRebuiltNotification: #SOL003 location: 7.4.6 parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version post: description: | - Notify. - The POST method notifies a VNF alarm or that the alarm list has been rebuilt. - 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 7.4.6.3.1-1 and 7.4.6.3.1-2 - for URI query parameters, request and response data structures, and response codes. + The POST method notifies a VNF alarm 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 7.4.6.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType requestBody: @@ -187,10 +175,8 @@ paths: get: description: | - The GET method allows the API producer to test the notification endpoint that is provided by the API consumer, - e.g. during subscription. - This method shall follow the provisions specified in the tables 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. + 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 7.4.6.3.2. responses: 204: $ref: '#/components/responses/AlarmListRebuiltNotification.Get.204' diff --git a/src/SOL003/VNFIndicator/VNFIndicator.yaml b/src/SOL003/VNFIndicator/VNFIndicator.yaml index e75d6e494dd8279ce0780dc6d7abd0668ee87b29..f997f9946ff793f5a9ba85f263a7f86c8c260f61 100644 --- a/src/SOL003/VNFIndicator/VNFIndicator.yaml +++ b/src/SOL003/VNFIndicator/VNFIndicator.yaml @@ -10,6 +10,7 @@ info: discrepancies the published ETSI Group Specification takes precedence. Please report bugs to https://forge.etsi.org/rep/nfv/SOL002-SOL003/issues + contact: name: NFV-SOL WG license: @@ -18,8 +19,8 @@ info: version: "1.3.0-impl:etsi.org:ETSI_NFV_OpenAPI:1" externalDocs: - description: ETSI GS NFV-SOL 003 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.03.01_60/gs_NFV-SOL003v030301p.pdf + description: ETSI GS NFV-SOL 003 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.05.01_60/gs_NFV-SOL003v030501p.pdf servers: - url: http://127.0.0.1/vnfind/v1 @@ -40,10 +41,7 @@ paths: #SOL003 location: 8.4.2 get: description: | - Get Indicator Value. - The GET method queries multiple VNF indicators. - 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 GET method queries multiple VNF indicators. See clause 8.4.2.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization @@ -83,10 +81,7 @@ paths: - $ref: '#/components/parameters/VnfInstanceId' get: description: | - Get Indicator Value. - The GET method queries multiple VNF indicators related to a VNF instance. - 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 GET method queries multiple VNF indicators related to a VNF instance. See clause 8.4.3.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType @@ -128,10 +123,7 @@ paths: - $ref: '#/components/parameters/VnfInstanceId' get: description: | - Get Indicator Value. - The GET method reads a VNF indicator. - 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 GET method reads a VNF indicator. See clause 8.4.4.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType @@ -172,38 +164,14 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version post: description: | - Subscribe. - The POST method creates a new subscription. - As the result of successfully executing this method, a new "Individual subscription" resource - as defined in clause 8.4.6 shall have been created. This method shall not trigger any notification. - Creation of two "Individual subscription" resources with the same callback URI and the same filter - can result in performance degradation and will provide duplicates of notifications to the NFVO, - and might make sense only in very rare use cases. Consequently, the VNFM may either allow creating - a new "Individual subscription" resource if another "Individual 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 "Individual subscription" resource (in which case it shall return - a "303 See Other" response code referencing the existing "Individual subscription" resource with the same - filter and callback URI). - This method shall follow the provisions specified in the tables 8.4.5.3.1-1 and 8.4.5.3.1-2 - for URI query parameters, request and response data structures, and response codes. + The POST method creates a new subscription. See clause 8.4.5.3.1. requestBody: $ref: '#/components/requestBodies/VnfIndicatorSubscriptionRequest' responses: 201: $ref: '#/components/responses/Subscriptions.Post.201' 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 VNFM 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. - $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/303 + $ref: '#/components/responses/Subscriptions.Post.303' 400: $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/400 401: @@ -217,7 +185,7 @@ paths: 406: $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406 422: - $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/422 + $ref: '#/components/responses/Subscriptions.Post.422' 500: $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/500 503: @@ -227,11 +195,8 @@ paths: get: 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. - 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 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 8.4.5.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/filter - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/nextpage_opaque_marker @@ -271,10 +236,7 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version get: description: | - Query Subscription Information. - The GET method reads an individual subscription. - This method shall follow the provisions specified in the tables 8.4.6.3.2-1 and 8.4.6.3.2-2 - for URI query parameters, request and response data structures, and response codes. + The GET method reads an individual subscription. See clause 8.4.6.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept responses: @@ -303,16 +265,7 @@ paths: delete: description: | - Terminate Subscription. - The DELETE method terminates an individual subscription. - This method shall follow the provisions specified in the tables 8.4.6.3.5-1 and 8.4.6.3.5-2 - for URI query parameters, request and response data structures, and response codes. - As the result of successfully executing this method, the "Individual subscription" resource - shall not exist any longer. This means that no notifications for that subscription shall be - sent to the formerly-subscribed API consumer. - - NOTE: Due to race conditions, some notifications might still be received by the formerly-subscribed - API consumer for a certain time period after the deletion. + The DELETE method terminates an individual subscription. See clause 8.4.6.3.5. responses: 204: $ref: '#/components/responses/IndividualSubscription.Delete.204' @@ -537,7 +490,82 @@ components: type: array items: $ref: ../../definitions/SOL002SOL003VNFIndicator_def.yaml#/definitions/VnfIndicatorSubscription - + + Subscriptions.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 VNFM + 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: + Location: + description: | + The resource URI of the created subscription resource. + style: simple + explode: false + schema: + type: string + format: url + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + + Subscriptions.Post.422: + description: | + 422 Unprocessable Entity + + Shall be returned when a subscription with + the same callback URI and the same filter + already exists and the policy of the VNFM + is to not create redundant subscriptions. + The HTTP response shall include a + "Location" HTTP header that contains the + resource URI of the existing "Individual + subscription" resource. + The response body shall be empty + headers: + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: The MIME type of the body of the response. + schema: + type: string + maximum: 1 + minimum: 1 + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" Subscriptions.Get.200: description: | 200 OK diff --git a/src/SOL003/VNFIndicatorNotification/VNFIndicatorNotification.yaml b/src/SOL003/VNFIndicatorNotification/VNFIndicatorNotification.yaml index f9539740d27e9bc34e7f3452ff6705b52fccb273..a6c018cfc1615bb7e01bc56d536db7706127e7dd 100644 --- a/src/SOL003/VNFIndicatorNotification/VNFIndicatorNotification.yaml +++ b/src/SOL003/VNFIndicatorNotification/VNFIndicatorNotification.yaml @@ -10,6 +10,7 @@ info: discrepancies the published ETSI Group Specification takes precedence. Please report bugs to https://forge.etsi.org/rep/nfv/SOL002-SOL003/issues + contact: name: NFV-SOL WG license: @@ -18,8 +19,8 @@ info: version: "1.3.0-impl:etsi.org:ETSI_NFV_OpenAPI:1" externalDocs: - description: ETSI GS NFV-SOL 003 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.03.01_60/gs_NFV-SOL003v030301p.pdf + description: ETSI GS NFV-SOL 003 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.05.01_60/gs_NFV-SOL003v030501p.pdf servers: - url: http://127.0.0.1/callback/v1 @@ -29,15 +30,12 @@ paths: ############################################################################### # Notification endpoint VnfIndicatorValueChangeNotification # ############################################################################### - /URI-is-provided-by-the-client-when-creating-the-subscription-VnfIndicatorValueChangeNotification: + /URI_is_provided_by_the_client_when_creating_the_subscription-VnfIndicatorValueChangeNotification: #SOL003 location: 8.4.7 post: description: | - Notify. - 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 8.4.7.3.1-1 and 8.4.7.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 8.4.7.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version @@ -63,10 +61,8 @@ paths: get: description: | - The GET method allows the API producer to test the notification endpoint that is provided by - the API consumer, e.g. during subscription. - This method shall follow the provisions specified in the tables 8.4.7.3.2-1 and 8.4.7.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 8.4.7.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version diff --git a/src/SOL003/VNFLifecycleManagement/VNFLifecycleManagement.yaml b/src/SOL003/VNFLifecycleManagement/VNFLifecycleManagement.yaml index 773a58bc46480d42452bd8060a6693cbac798516..cc816d585c8db9efef8e5eea01225f4504da0c37 100644 --- a/src/SOL003/VNFLifecycleManagement/VNFLifecycleManagement.yaml +++ b/src/SOL003/VNFLifecycleManagement/VNFLifecycleManagement.yaml @@ -10,20 +10,21 @@ info: discrepancies the published ETSI Group Specification takes precedence. Please report bugs to https://forge.etsi.org/rep/nfv/SOL002-SOL003/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 003 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.03.01_60/gs_NFV-SOL003v030301p.pdf + description: ETSI GS NFV-SOL 003 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.05.01_60/gs_NFV-SOL003v030501p.pdf servers: - - url: http://127.0.0.1/vnflcm/v1 - - url: https://127.0.0.1/vnflcm/v1 + - url: http://127.0.0.1/vnflcm/v2 + - url: https://127.0.0.1/vnflcm/v2 paths: ############################################################################### @@ -43,25 +44,8 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version post: description: | - The POST method creates a new VNF instance resource based on a VNF package that is onboarded and in - "ENABLED" state. - This method shall follow the provisions specified in the tables 5.4.2.3.1-1 and 5.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 VNF instance" - resource as defined in clause 5.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 VnfIdentifierCreationNotification shall be triggered as part of successfully - executing this method as defined in clause 5.5.2.18. - When initiating the creation of a VNF instance resource, the passed metadata values can differ from - the default values for metadata, if any, declared in the VNFD. - The VNFM shall apply the "metadata" attributes in the "CreateVnfRequest" data structure in the payload - body to the "metadata" attribute in the "VnfInstance" data structure on top of the default values that - were obtained from the VNFD according to the rules of JSON Merge Patch (see IETF RFC 7396). - For all metadata keys defined in the VNFD, the VNFM shall ensure that the content of the resulting - "metadata" attributes is valid against the data type definitions in the VNFD. The absence of a metadata - item that is marked "required" in the VNFD shall not be treated as an error. In case a "metadata" child - attribute is not defined in the VNFD, the VNFM shall consider it valid in case it is a valid JSON structure. - In case of an error, the operation shall be rejected with a "422 Unprocessable Entity" error. + The POST method creates a new VNF instance resource based on a VNF package that is onboarded + and in "ENABLED" state. See clause 5.4.2.3.1. requestBody: $ref: '#/components/requestBodies/CreateVnfRequest' responses: @@ -80,7 +64,7 @@ paths: 406: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/406" 422: - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/422" + $ref: '#/components/responses/VNFInstances.Post.422' 500: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500" 503: @@ -90,8 +74,7 @@ paths: get: description: | - Query VNF. - The GET method queries information about multiple VNF instances. + The GET method queries information about multiple VNF instances. See clause 5.4.2.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/filter - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/all_fields @@ -134,11 +117,8 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version get: description: | - Query VNF. - The GET method retrieves information about a VNF instance by reading an "Individual VNF instance" resource. - This method shall follow the provisions specified in the tables 5.4.3.3.2-1 and 5.4.3.3.2-2 - for URI query parameters, request and response data structures, and response codes. + See clause 5.4.3.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept responses: @@ -168,47 +148,7 @@ paths: patch: #SOL003 location: 5.4.3.3.4 description: | - Modify VNF Information. - This method modifies an "Individual VNF instance" resource. - Changes to the VNF configurable properties are applied to the configuration in the VNF instance, - and are reflected in the representation of this resource. - Other changes are applied to the VNF instance information managed by the VNFM, and are reflected - in the representation of this resource. - This method shall follow the provisions specified in the tables 5.4.3.3.4-1 and 5.4.3.3.4-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 5.4.1.2. - - The VNFM shall apply the "metadata", "extensions" and "vnfConfigurableProperties" attributes in the - "VnfInfoModificationRequest" data structure in the payload body to the existing "extensions" and - "vnfConfigurableProperties" attributes from the "VnfInstance" data structure according to the - rules of JSON Merge Patch (see IETF RFC 7396). - The VNFM shall ensure that the content of the child attributes of the resulting "metadata", "extensions" - and "vnfConfigurableProperties" attributes is valid against the data types definitions of these child - attributes in the VNFD. - - In case a "metadata" child attribute is not defined in the VNFD, the VNFM shall consider it valid in - case it is a valid JSON structure. - - NOTE: "Extensions" and "vnfConfigurableProperties" child attributes are always declared in the VNFD. - - If the VNF instance is in the "INSTANTIATED" state, the validation shall also include - ensuring the presence of all "extensions" and "vnfConfigurableProperties" child attributes that are - marked as "required" in the VNFD. - - NOTE: This allows to build the set of "extensions" and "vnfConfigurableProperties" incrementally - prior VNF instantiation but ensures their completeness for an instantiated VNF instance. - - The absence of a metadata item that is marked "required" in the VNFD shall not be treated as an error. - - In case of an error during validation, the operation shall be automatically rolled back, and - appropriate error information shall be provided in the "VnfLcmOperationOccurrenceNotification" - message and the "VnfLcmOpOcc" data structure. - The processing of changes to the "metadata" / "extensions" / "vnfConfigurableProperties" attributes - shall be performed in the "PROCESSING" phase of the LCM operation. The change shall be atomic, i.e. the - result of intermediate stages shall not be visible in the API. In case of successful completion of the - processing and validation, the attributes shall be provided in the "VnfInstance" data structure and - the operation shall proceed towards successful completion. + This method modifies an "Individual VNF instance" resource. See clause 5.4.3.3.4. requestBody: $ref: '#/components/requestBodies/VnfInfoModificationRequest' responses: @@ -227,15 +167,9 @@ paths: 406: $ref: "../../responses/SOL002SOL003_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 "Individual VNF instance" resource. - #Typically, this is due to the fact that another LCM operation is ongoing. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409" + $ref: '#/components/responses/IndividualVnfInstance.Patch.409' 412: - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/412" + $ref: '#/components/responses/IndividualVnfInstance.Patch.412' 500: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500" 503: @@ -244,14 +178,7 @@ paths: delete: #SOL003 location: 5.4.3.3.5 description: | - Delete VNF Identifier. - This method deletes an "Individual VNF instance" resource. - This method shall follow the provisions specified in the tables 5.4.3.3.5-1 and 5.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 VNF instance" resource - shall not exist any longer. - A notification of type "VnfIdentifierDeletionNotification" shall be triggered as part of successfully - executing this method as defined in clause 5.5.2.19. + This method deletes an "Individual VNF instance" resource. See clause 5.4.3.3.5. responses: 204: $ref: '#/components/responses/IndividualVnfInstance.Delete.204' @@ -268,13 +195,7 @@ paths: 406: $ref: "../../responses/SOL002SOL003_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 "Individual VNF instance" resource is in INSTANTIATED state. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409" + $ref: '#/components/responses/IndividualVnfInstance.Delete.409' 412: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/412" 500: @@ -292,32 +213,7 @@ paths: post: #SOL003 location: 5.4.4.3.1 description: | - Instantiate VNF. - The POST method instantiates a VNF instance. - This method shall follow the provisions specified in the tables 5.4.4.3.1-1 and 5.4.4.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 5.4.1.2. - In addition, once the VNFM has successfully completed the underlying VNF LCM operation occurrence, - it shall set the "instantiationState" attribute to the value "INSTANTIATED" and the "vnfState" - attribute to the value "STARTED" in the representation of the "Individual VNF instance" resource. - - When instantiating a VNF instance, the values of the extensions and/or VNF configurable properties - passed in the instantiation request can differ from the values in the "VnfInstance" data structure - that were initialized from default values, if any, declared in the VNFD. - The VNFM shall apply the "extensions" and "vnfConfigurableProperties" attributes in the - "InstantiateVnfRequest" data structure in the payload body to the existing "extensions" and - "vnfConfigurableProperties" attributes from the "VnfInstance" data structure according to the rules - of JSON Merge Patch (see IETF RFC 7396). The VNFM shall ensure that the content of the resulting - "extensions" and "vnfConfigurableProperties" attributes is valid against the VNFD (including the - presence of all child attributes that are marked as "required" in the VNFD). In case of an error - during validation, the operation shall be automatically rolled back, and appropriate error information - shall be provided in the "VnfLcmOperationOccurrenceNotification" message and the "VnfLcmOpOcc" - data structure. The processing of changes to the "extensions" / "vnfConfigurableProperties" attributes - shall be performed in the "STARTING" phase of the LCM operation. The change shall be atomic, i.e. - the result of intermediate stages shall not be visible in the API. In case of successful completion - of the processing and validation, the attributes shall be provided in the "VnfInstance" data structure - and the operation shall proceed to obtain the grant. + The POST method instantiates a VNF instance. See clause 5.4.4.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization @@ -340,15 +236,7 @@ paths: 406: $ref: "../../responses/SOL002SOL003_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 "Individual VNF instance" resource is in INSTANTIATED state, - #or that a required child attribute of the "extensions" attribute has not been set. - #Those attributes are marked as "required" in the VNFD. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409" + $ref: '#/components/responses/InstantiateVnfInstance.Post.409' 416: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/416" 500: @@ -368,15 +256,7 @@ paths: post: #SOL003 location: 5.4.5.3.1 description: | - Scale VNF. - The POST method requests to scale a VNF instance resource incrementally. - This method shall follow the provisions specified in the tables 5.4.5.3.1-1 and 5.4.5.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 5.4.1.2. - In addition, once the VNFM has successfully completed the underlying VNF LCM operation occurrence, - it shall reflect the result of scaling the VNF instance by updating the "scaleStatus" attribute - in the representation of the "Individual VNF instance" resource. + The POST method requests to scale a VNF instance resource incrementally. See clause 5.4.5.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization @@ -393,32 +273,13 @@ paths: 403: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/403" 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, - #including rules for the presence of the response body. - #Specifically in case of this task resource, the response code 404 shall also returned if - #the task is not supported for the VNF instance represented by the parent resource, which means that the - #task resource consequently does not exist. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/404" + $ref: '#/components/responses/ScaleVnfInstance.Post.404' 405: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/405" 406: $ref: "../../responses/SOL002SOL003_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 "Individual VNF instance" resource is in - #NOT_INSTANTIATED state, or that another lifecycle management operation is ongoing, or that - #a required child attribute of the "extensions" attribute has not been set. - #Those attributes are marked as "required" in the VNFD. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409" + $ref: '#/components/responses/ScaleVnfInstance.Post.409' 500: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500" 503: @@ -436,15 +297,7 @@ paths: post: #SOL003 location: 5.4.6.3.1 description: | - Scale VNF to Level. - The POST method requests to scale a VNF instance resource to a target level. - This method shall follow the provisions specified in the tables 5.4.6.3.1-1 and 5.4.6.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 5.4.1.2. - In addition, once the VNFM has successfully completed the underlying VNF LCM operation occurrence, - it shall reflect the result of scaling the VNF instance by updating the "scaleStatus" attribute - in the representation of the "Individual VNF instance" resource. + The POST method requests to scale a VNF instance resource to a target level. See clause 5.4.6.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization @@ -461,32 +314,13 @@ paths: 403: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/403" 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, - #including rules for the presence of the response body. - #Specifically in case of this task resource, the response code 404 shall also returned if the task - #is not supported for the VNF instance represented by the parent resource, which means that the task resource - #consequently does not exist. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/404" + $ref: '#/components/responses/ScaleToLevelVnfInstance.Post.404' 405: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/405" 406: $ref: "../../responses/SOL002SOL003_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 VNF instance resource is in NOT_INSTANTIATED state, - #that another lifecycle management operation is ongoing, or that a required child attribute of - #the "extensions" attribute has not been set. - #Those attributes are marked as "required" in the VNFD. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409" + $ref: '#/components/responses/ScaleToLevelVnfInstance.Post.409' 500: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500" 503: @@ -503,31 +337,7 @@ paths: - $ref: '#/components/parameters/VnfInstanceId' post: description: | - Change VNF Flavour. - This method shall follow the provisions specified in the tables 5.4.7.3.1-1 and 5.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 5.4.1.2. - In addition, once the VNFM has successfully completed the underlying VNF LCM operation occurrence, - it shall set the "flavourId" attribute in the representation of the "Individual VNF instance" - resource to the value of the "newFlavourId" attribute passed in the "ChangeVnfFlavourRequest" - data in the POST request. - - When initiating a change of the current VNF flavour, the values of the extensions and/or VNF - configurable properties, can differ between the new flavour and the old flavour of the VNF instance. - The VNFM shall apply the "extensions" and "vnfConfigurableProperties" attributes in the - "ChangeVnfFlavourRequest" data structure in the payload body to the existing "extensions" and - "vnfConfigurableProperties" attributes from the "VnfInstance" data structure according to the rules - of JSON Merge Patch (see IETF RFC 7396). The VNFM shall ensure that the content of the resulting - "extensions" and "vnfConfigurableProperties" attributes is valid against the VNFD (which includes - ensuring the presence of all child attributes that are marked as "required" in the VNFD). In case - of an error, the operation shall be automatically rolled back, and appropriate error information - shall be provided in the "VnfLcmOperationOccurrenceNotification" message and the "VnfLcmOpOcc" data - structure. The processing of changes to the "extensions" / "vnfConfigurableProperties" attributes - shall be performed in the "STARTING" phase of the LCM operation. The change shall be atomic, i.e. - the result of intermediate stages shall not be visible in the API. In case of successful completion - of the processing and validation, the attributes shall be provided in the "VnfInstance" data structure - and the operation shall proceed to obtain the grant. + The POST method changes the deployment flavour of a VNF instance. See clause 5.4.7.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization @@ -544,32 +354,13 @@ paths: 403: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/403" 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, - #including rules for the presence of the response body. - #Specifically in case of this task resource, the response code 404 shall also returned if the task - #is not supported for the VNF instance represented by the parent resource, which means that the task resource - #consequently does not exist. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/404" + $ref: '#/components/responses/ChangeFlavourVnfInstance.Post.404' 405: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/405" 406: $ref: "../../responses/SOL002SOL003_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 VNF instance resource is in NOT_INSTANTIATED state, - #that another lifecycle management operation is ongoing, or that a required child attribute of - #the "extensions" attribute has not been set. - #Those attributes are marked as "required" in the VNFD. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409" + $ref: '#/components/responses/ChangeFlavourVnfInstance.Post.409' 500: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500" 503: @@ -586,16 +377,8 @@ paths: - $ref: '#/components/parameters/VnfInstanceId' post: description: | - Terminate VNF. - The POST method triggers the VNFM to terminate a VNF instance and to request to the VIM - the release of its used virtualised resources. - This method shall follow the provisions specified in the tables 5.4.8.3.1-1 and 5.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 5.4.1.2. - In addition, once the VNFM has successfully completed the underlying VNF LCM operation occurrence, - it shall set the "instantiationState" attribute in the representation of the "Individual VNF instance" - resource to the value "NOT_INSTANTIATED". + The POST method triggers the VNFM to terminate a VNF instance and to request to the VIM the + release of its used virtualised resources. See clause 5.4.8.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization @@ -618,16 +401,7 @@ paths: 406: $ref: "../../responses/SOL002SOL003_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 VNF instance resource is in NOT_INSTANTIATED state, - #that another lifecycle management operation is ongoing, or that a required child attribute of - #the "extensions" attribute has not been set. - #Those attributes are marked as "required" in the VNFD. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409" + $ref: '#/components/responses/TerminateVnfInstance.Post.409' 500: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500" 503: @@ -644,12 +418,7 @@ paths: - $ref: '#/components/parameters/VnfInstanceId' post: description: | - Heal VNF. - The POST method requests to heal a VNF instance. - This method shall follow the provisions specified in the tables 5.4.9.3.1-1 and 5.4.9.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 5.4.1.2. + The POST method requests to heal a VNF instance. See clause 5.4.9.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization @@ -666,32 +435,13 @@ paths: 403: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/403" 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, - #including rules for the presence of the response body. - #Specifically in case of this task resource, the response code 404 shall also returned if the task is - #not supported for the VNF instance represented by the parent resource, which means that the task resource - #consequently does not exist. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/404" + $ref: '#/components/responses/HealVnfInstance.Post.404' 405: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/405" 406: $ref: "../../responses/SOL002SOL003_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 VNF instance resource is in NOT_INSTANTIATED state, - #that another lifecycle management operation is ongoing, or that a required child attribute of - #the "extensions" attribute has not been set. - #Those attributes are marked as "required" in the VNFD. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409" + $ref: '#/components/responses/HealVnfInstance.Post.409' 500: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500" 503: @@ -708,15 +458,7 @@ paths: - $ref: '#/components/parameters/VnfInstanceId' post: description: | - Operate VNF. - The POST method changes the operational state of a VNF instance resource. - This method shall follow the provisions specified in the tables 5.4.10.3.1-1 and 5.4.10.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 5.4.1.2. - In addition, once the VNFM has successfully completed the underlying VNF LCM operation occurrence, - it shall set the "vnfState" attribute in the representation of the "Individual VNF instance" resource - to the value of the "changeStateTo" attribute passed in the "OperateVnfRequest" data in the POST request. + The POST method changes the operational state of a VNF instance. See clause 5.4.10.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization @@ -733,32 +475,13 @@ paths: 403: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/403" 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, - #including rules for the presence of the response body. - #Specifically in case of this task resource, the response code 404 shall also returned if the task is - #not supported for the VNF instance represented by the parent resource, which means that the task resource - #consequently does not exist. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/404" + $ref: '#/components/responses/OperateVnfInstance.Post.404' 405: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/405" 406: $ref: "../../responses/SOL002SOL003_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 VNF instance resource is in NOT_INSTANTIATED state, - #that another lifecycle management operation is ongoing, or that a required child attribute of - #the "extensions" attribute has not been set. - #Those attributes are marked as "required" in the VNFD. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409" + $ref: '#/components/responses/OperateVnfInstance.Post.409' 500: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500" 503: @@ -775,12 +498,7 @@ paths: - $ref: '#/components/parameters/VnfInstanceId' post: description: | - Change External VNF Connectivity. - The POST method changes the external connectivity of a VNF instance. - This method shall follow the provisions specified in the tables 5.4.11.3.1-1 and 5.4.11.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 5.4.1.2. + The POST method changes the external connectivity of a VNF instance. See clause 5.4.11.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization @@ -803,15 +521,7 @@ paths: 406: $ref: "../../responses/SOL002SOL003_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 another lifecycle management operation is ongoing, - #or that a required child attribute of the "extensions" attribute has not been set. - #Those attributes are marked as "required" in the VNFD. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409" + $ref: '#/components/responses/ChangeExtConnVnfInstance.Post.409' 500: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500" 503: @@ -828,15 +538,7 @@ paths: - $ref: '#/components/parameters/VnfInstanceId' post: description: | - The POST method changes the current VNF package on which the VNF instance is based. - This method shall follow the provisions specified in the tables 5.4.11a.3.1-1 and - 5.4.11a.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 5.4.1.2. - During a change of the current VNF package, the allowed and required extensions and/or - VNF configurable properties and their data types, as well as the metadata data types, - can differ between the source and the destination VNFD. + The POST method changes the current VNF package on which the VNF instance is based. See clause 5.4.11a.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization @@ -859,15 +561,7 @@ paths: 406: $ref: "../../responses/SOL002SOL003_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 another lifecycle management operation is ongoing, - #or that a required child attribute of the "extensions" attribute has not been set. - #Those attributes are marked as "required" in the VNFD. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409" + $ref: '#/components/responses/ChangeVnfpkgVnfInstance.Post.409' 500: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500" 503: @@ -882,11 +576,8 @@ paths: #SOL003 location: 5.4.12 get: description: | - Get Operation Status. - The API consumer can use this method to query status information about multiple - VNF lifecycle management operation occurrences. - This method shall follow the provisions specified in the tables 5.4.12.3.2-1 and 5.4.12.3.2-2 - for URI query parameters, request and response data structures, and response codes. + The API consumer can use this method to query status information about multiple VNF lifecycle management + operation occurrences. See clause 5.4.12.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization @@ -919,6 +610,7 @@ paths: 504: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/504" + ############################################################################### # Individual VNF LCM operation occurrence # ############################################################################### @@ -928,11 +620,8 @@ paths: - $ref: '#/components/parameters/VnfLcmOpOccId' get: description: | - Get Operation Status. - The API consumer can use this method to retrieve status information about a VNF lifecycle - management operation occurrence by reading an "Individual VNF LCM operation occurrence" resource. - This method shall follow the provisions specified in the tables 5.4.13.3.2-1 and 5.4.13.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 a VNF lifecycle management operation + occurrence by reading an "Individual VNF LCM operation occurrence" resource. See clause 5.4.13.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization @@ -968,15 +657,9 @@ paths: - $ref: '#/components/parameters/VnfLcmOpOccId' post: description: | - The POST method initiates retrying a VNF lifecycle operation if that operation - has experienced a temporary failure, i.e. the related "Individual VNF LCM operation occurrence" - resource is in "FAILED_TEMP" state. - This method shall follow the provisions specified in the tables 5.4.14.3.1-1 and 5.4.14.3.1-2 - for URI query parameters, request and response data structures, and response codes. - In case of success of processing the asynchronous request, the "operationState" attribute - in the representation of the parent resource shall be changed to "PROCESSING" and the applicable - "start" notification according to clause 5.6.2.2 shall be emitted to indicate that the underlying - VNF LCM operation occurrence proceeds. + The POST method initiates retrying a VNF lifecycle operation if that operation has experienced a temporary + failure, i.e. the related "Individual VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. + See clause 5.4.14.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version @@ -990,30 +673,13 @@ paths: 403: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/403" 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, - #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 VNF LCM operation occurrence represented by the parent resource, - #which means that the task resource consequently does not exist. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/404" + $ref: '#/components/responses/RetryVnfLcmOpOcc.Post.404' 405: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/405" 406: $ref: "../../responses/SOL002SOL003_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 VNF LCM operation occurrence. - #Typically, this is due to the fact that the VNF LCM operation occurrence is not in FAILED_TEMP state, - #or another error handling action is starting, such as rollback or fail. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409" + $ref: '#/components/responses/RetryVnfLcmOpOcc.Post.409' 500: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500" 503: @@ -1030,19 +696,9 @@ paths: - $ref: '#/components/parameters/VnfLcmOpOccId' post: description: | - The POST method initiates rolling back a VNF lifecycle operation if that operation - has experienced a temporary failure, i.e. the related "Individual VNF LCM operation occurrence" - resource is in "FAILED_TEMP" state. - In case of rolling back an occurrence of the "InstantiateVnf" operation, the VNFM shall - request to the VIM the release of the virtualised resources that were allocated for the related VNF instance. - The "rollback" task shall be supported by the VNFM for any VNF LCM operation occurrence that represents an - "InstantiateVnf" operation in FAILED_TEMP state. - This method shall follow the provisions specified in the tables 5.4.15.3.1-1 and 5.4.15.3.1-2 - for URI query parameters, request and response data structures, and response codes. - In case of success of processing the asynchronous request, the "operationState" attribute - in the representation of the parent resource shall be changed to "ROLLING_BACK" and the applicable - "start" notification according to clause 5.6.2.2 shall be emitted to indicate that rollback of the - underlying VNF LCM operation occurrence is attempted. + The POST method initiates rolling back a VNF lifecycle operation if that operation has experienced a temporary + failure, i.e. the related "Individual VNF LCM operation occurrence" resource is in "FAILED_TEMP" state. + See clause 5.4.15.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version @@ -1056,30 +712,13 @@ paths: 403: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/403" 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, - #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 VNF LCM operation occurrence represented by the parent resource, - #which means that the task resource consequently does not exist. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/404" + $ref: '#/components/responses/RollbackVnfLcmOpOcc.Post.404' 405: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/405" 406: $ref: "../../responses/SOL002SOL003_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 VNF LCM operation occurrence. - #Typically, this is due to the fact that the VNF LCM operation occurrence is not in FAILED_TEMP state, - #or another error handling action is starting, such as rollback or fail. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409" + $ref: '#/components/responses/RollbackVnfLcmOpOcc.Post.409' 500: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500" 503: @@ -1096,14 +735,8 @@ paths: - $ref: '#/components/parameters/VnfLcmOpOccId' post: description: | - The POST method marks a VNF lifecycle management operation occurrence as "finally failed" - if that operation occurrence is in "FAILED_TEMP" state. - This method shall follow the provisions specified in the tables 5.4.16.3.1-1 and 5.4.16.3.1-2 - for URI query parameters, request and response data structures, and response codes. - In case of success, the "operationState" attribute in the representation of the parent resource - shall be changed to "FAILED" and the applicable "result" notification according to clause 5.6.2.2 - shall be emitted to indicate that the execution of the underlying VNF LCM operation occurrence - has finally and unrecoverably failed. + The POST method marks a VNF lifecycle management operation occurrence as "finally failed" if that operation + occurrence is in "FAILED_TEMP" state. See clause 5.4.16.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization @@ -1118,30 +751,13 @@ paths: 403: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/403" 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, - #including rules for the presence of the response body. - #Specifically in case of this task resource, the response code 404 shall also returned if the task - #is not supported for the VNF LCM operation occurrence represented by the parent resource, which means - #that the task resource consequently does not exist. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/404" + $ref: '#/components/responses/FailVnfLcmOpOcc.Post.404' 405: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/405" 406: $ref: "../../responses/SOL002SOL003_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 VNF LCM operation occurrence. - #Typically, this is due to the fact that the VNF LCM operation occurrence is not in FAILED_TEMP state, - #or another error handling action is starting, such as retry or rollback. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409" + $ref: '#/components/responses/FailVnfLcmOpOcc.Post.409' 500: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500" 503: @@ -1158,30 +774,9 @@ paths: - $ref: '#/components/parameters/VnfLcmOpOccId' post: description: | - The POST method initiates cancelling an ongoing VNF lifecycle operation while - it is being executed or rolled back, i.e. the related "Individual VNF LCM operation occurrence" - resource is either in "STARTING" or "PROCESSING" or "ROLLING_BACK" state. - This method shall follow the provisions specified in the tables 5.4.17.3.1-1 and 5.4.17.3.1-2 - for URI query parameters, request and response data structures, and response codes. - Before returning the "202 Accepted" response, the VNFM shall update the "isCancelPending" - and "cancelMode" attributes in the representation of the parent resource according to the - provisions in clause 5.5.2.13. - - In case of success of processing the asynchronous request: - 1) If the request has been processed in "STARTING" state, the "operationState" attribute - in the representation of the parent resource shall be changed to "ROLLED_BACK". - 2) 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 VNFM shall update the "isCancelPending" and "cancelMode" attributes - in the representation of the parent resource according to the provisions in clause 5.5.2.13 - to reflect the new status, and the applicable "result" notification according to clause 5.6.2.2 - shall be emitted to indicate that the execution of the underlying VNF 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. + The POST method initiates cancelling an ongoing VNF lifecycle operation while it is being executed or rolled + back, i.e. the related "Individual VNF LCM operation occurrence" resource is either in "STARTING" or + "PROCESSING" or "ROLLING_BACK" state. See clause 5.4.17.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version @@ -1195,20 +790,13 @@ paths: 403: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/403" 404: - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/404" + $ref: '#/components/responses/CancelVnfLcmOpOcc.Post.404' 405: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/405" 406: $ref: "../../responses/SOL002SOL003_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 VNF LCM operation occurrence. - #Typically, this is due to the fact that the operation occurrence is not in STARTING, - #PROCESSING or ROLLING_BACK state. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409" + $ref: '#/components/responses/CancelVnfLcmOpOcc.Post.409' 500: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500" 503: @@ -1227,35 +815,14 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version post: description: | - Subscribe. - The POST method creates a new subscription. - This method shall follow the provisions specified in the tables 5.4.18.3.1-1 and 5.4.18.3.1-2 - for URI query parameters, request and response data structures, and response codes. - As the result of successfully executing this method, a new "Individual subscription" - resource as defined in clause 5.4.3 shall have been created. This method shall not trigger any notification. - Creation of two "Individual subscription" resources with the same callback URI and the same filter - can result in performance degradation and will provide duplicates of notifications to the NFVO, - and might make sense only in very rare use cases. Consequently, the VNFM may either allow creating - an "Individual subscription" resource if another "Individual 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 "Individual subscription" resource (in which case it shall - return a "303 See Other" response code referencing the existing "Individual subscription" resource - with the same filter and callback URI). + The POST method creates a new subscription. See clause 5.4.18.3.1. requestBody: $ref: '#/components/requestBodies/LccnSubscriptionRequest' responses: 201: $ref: '#/components/responses/Subscriptions.Post.201' 303: - #description: | - #303 SEE OTHER - - #Shall be returned if a subscription with the same callback URI and the same filter already exists - #and the policy of the VNFM 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. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/303" + $ref: '#/components/responses/Subscriptions.Post.303' 400: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/400" 401: @@ -1269,7 +836,7 @@ paths: 406: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/406" 422: - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/422" + $ref: '#/components/responses/Subscriptions.Post.422' 500: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500" 503: @@ -1278,10 +845,8 @@ paths: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/504" get: 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 5.4.18.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/filter - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/nextpage_opaque_marker @@ -1318,10 +883,8 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version get: description: | - Query Subscription Information. The GET method retrieves information about a subscription by reading an "Individual subscription" resource. - This method shall follow the provisions specified in the tables 5.4.19.3.2-1 and 5.4.19.3.2-2 - for URI query parameters, request and response data structures, and response codes. + See clause 5.4.19.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept responses: @@ -1348,17 +911,7 @@ paths: delete: description: | - Terminate Subscription. - The DELETE method terminates an individual subscription. - This method shall follow the provisions specified in the tables 5.4.19.3.5-1 and 5.4.19.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. + The DELETE method terminates an individual subscription. See clause 5.4.19.3.5. responses: 204: $ref: '#/components/responses/IndividualSubscription.Delete.204' @@ -1390,19 +943,8 @@ paths: - $ref: '#/components/parameters/VnfInstanceId' post: description: | - The POST method requests taking a snapshot a VNF instance and populating a - previously created VNF snapshot resource (refer to clause 5.4.23.3.1) with - the snapshot content. - The steps and conditions that apply as the result of successfully executing - this method are specified in clause 5.4.1.2. - In addition, once the VNFM has successfully completed the underlying VNF LCM - operation occurrence, it shall reflect the result of the VNF snapshot creation - by updating the corresponding "Individual VNF snapshot" resource indicated by - the "vnfSnapshotInfoId" attribute of the "CreateVnfSnapshotRequest" that is - included in the payload body of the request. - This method shall follow the provisions specified in the tables 5.4.21.3.1-1 - and 5.4.21.3.1-2 for URI query parameters, request and response data structures, - and response codes. + The POST method requests taking a snapshot a VNF instance and populating a previously created VNF snapshot + resource (refer to clause 5.4.23.3.1) with the snapshot content. See clause 5.4.21.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization @@ -1419,36 +961,15 @@ paths: 403: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/403" 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, - #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 VNF instance 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. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/404" + $ref: '#/components/responses/CreateVnfSnapshotTask.Post.404' 405: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/405" 406: $ref: "../../responses/SOL002SOL003_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 VNF 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. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409" + $ref: '#/components/responses/CreateVnfSnapshotTask.Post.409' 422: - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/422" + $ref: '#/components/responses/CreateVnfSnapshotTask.Post.422' 500: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500" 503: @@ -1465,10 +986,7 @@ paths: - $ref: '#/components/parameters/VnfInstanceId' post: description: | - The POST method requests reverting a VNF instance to a VNF snapshot. - This method shall follow the provisions specified in the tables 5.4.22.3.1-1 - and 5.4.22.3.1-2 for URI query parameters, request and response data structures, - and response codes. + The POST method requests reverting a VNF instance to a VNF snapshot. See clause 5.4.22.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization @@ -1485,34 +1003,13 @@ paths: 403: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/403" 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, - #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 VNF instance 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. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/404" + $ref: '#/components/responses/RevertToVnfSnapshotTask.Post.404' 405: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/405" 406: $ref: "../../responses/SOL002SOL003_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 VNF 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. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409" + $ref: '#/components/responses/RevertToVnfSnapshotTask.Post.409' 500: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500" 503: @@ -1531,32 +1028,7 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version post: description: | - The POST method creates a new "Individual VNF snapshot" resource. - - As a result of successfully executing this method, a new "Individual VNF snapshot" - resource as defined in clause 5.4.24 shall have been created. - - The creation of an "Individual VNF snapshot" resource can be performed for two reasons: - - To create an "Individual VNF snapshot" resources that can later be populated by a - new VNF snapshot taken from a VNF instance (refer to clause 5.4.21.3.1). - - To create an "Individual VNF snapshot" resource that can be populated with information - gathered from a VNF snapshot package extraction. In this case, the API consumer indicates - the source of the VNF snapshot package in the payload body of the POST request to the - present resource. - - In the second case, for a successful execution of the operation, the values in the - "VnfSnapshotInfo" data structure representing the "Individual VNF snapshot" resource - shall be applied as follows: - - If the request (refer to clause 5.5.2.20) includes the "vnfSnapshot" attribute, - the VNFM shall apply the "VnfSnapshotInfo" with such provided information. - - If the request (refer to clause 5.5.2.20) does not include the "vnfSnapshot" - attribute, the VNFM shall first fetch the VNF snapshot record from the source VNF - snapshot package signalled by the "vnfSnapshotPkgId" attribute in the request and - then apply the "VnfSnapshotInfo" from the fetched VNF snapshot record. - - This method shall follow the provisions specified in the tables 5.4.23.3.1-1 - and 5.4.23.3.1-2 for URI query parameters, request and response data structures, - and response codes. + The POST method creates a new "Individual VNF snapshot" resource. See clause 5.4.23.3.1. requestBody: $ref: '#/components/requestBodies/CreateVnfSnapshotInfoRequest' responses: @@ -1574,8 +1046,6 @@ paths: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/405" 406: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/406" - 409: - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409" 500: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500" 503: @@ -1631,10 +1101,8 @@ paths: get: #SOL003 location: 5.4.24.3.2 description: | - The GET method retrieves information about a VNF snapshot by reading an "Individual VNF snapshot" - resource. - This method shall follow the provisions specified in the tables 5.4.24.3.2-1 and 5.4.24.3.2-2 - for URI query parameters, request and response data structures, and response codes. + The GET method retrieves information about a VNF snapshot by reading an "Individual VNF snapshot" resource. + See clause 5.4.24.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept responses: @@ -1664,16 +1132,7 @@ paths: patch: #SOL003 location: 5.4.24.3.4 description: | - This method modifies an "Individual VNF snapshot" resource. - - Changes are applied to the VNF snapshot information managed by the VNFM and are reflected in the - representation of this resource. The VNFM shall reject the modification request if the "vnfSnapshot" - attribute in the "VnfSnapshotInfo" structure representing the "Individual VNF snapshot" resource - is not empty, or the resource is associated to an ongoing VNF snapshot operation (e.g., a VNF - snapshot creation process has started). - - This method shall follow the provisions specified in the tables 5.4.24.3.4-1 and 5.4.24.3.4-2 - for URI query parameters, request and response data structures, and response codes. + This method modifies an "Individual VNF snapshot" resource. See clause 5.4.24.3.4. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType @@ -1695,9 +1154,9 @@ paths: 406: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/406" 409: - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409" + $ref: '#/components/responses/IndividualVnfSnapshot.Patch.409' 412: - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/412" + $ref: '#/components/responses/IndividualVnfSnapshot.Patch.412' 416: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/416" 500: @@ -1710,13 +1169,8 @@ paths: delete: #SOL003 location: 5.4.24.3.5 description: | - This method deletes an "Individual VNF snapshot" resource and the associated VNF snapshot - information managed by the 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. - This method shall follow the provisions specified in the tables 5.4.24.3.5-1 and 5.4.24.3.5-2 - for URI query parameters, request and response data structures, and response codes. + This method deletes an "Individual VNF snapshot" resource and the associated VNF snapshot information + managed by the VNFM, and any resource associated to the VNF snapshot managed by the VIM. See clause 5.4.24.3.5. responses: 204: $ref: '#/components/responses/IndividualVnfSnapshot.Delete.204' @@ -1733,16 +1187,7 @@ paths: 406: $ref: "../../responses/SOL002SOL003_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 VNF snapshot is in use by some operation such - #as reverting a VNF instance to a VNF snapshot or creating a VNF snapshot package. - #The response body shall contain a ProblemDetails structure, in which the "detail" attribute - #shall convey more information about the error. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409" + $ref: '#/components/responses/IndividualVnfSnapshot.Delete.409' 412: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/412" 500: @@ -1784,9 +1229,9 @@ paths: 406: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/406" 409: - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409" + $ref: '#/components/responses/IndividualVnfSnapshotState.Get.409' 416: - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/416" + $ref: '#/components/responses/IndividualVnfSnapshotState.Get.416' 500: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500" 503: @@ -2045,6 +1490,59 @@ components: schema: $ref: "./definitions/SOL003VNFLifecycleManagement_def.yaml#/definitions/VnfInstance" + VNFInstances.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 [8], + 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 VNF package + referenced by the "vnfdId" attribute in the + "CreateVnfRequest" structure is not in the "ENABLED" + state or does not exist. In this case, the "detail" + attribute in the "ProblemDetails" structure shall convey + more information about the erro + headers: + Location: + description: | + The resource URI of the created subscription resource. + style: simple + explode: false + schema: + type: string + format: url + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + VNFInstances.Get.200: description: | 200 OK @@ -2172,13 +1670,19 @@ components: schema: $ref: "./definitions/SOL003VNFLifecycleManagement_def.yaml#/definitions/VnfInstance" - IndividualVnfInstance.Delete.204: + IndividualVnfInstance.Patch.409: description: | - 204 NO CONTENT - - Shall be returned when the "Individual VNF instance" resource and the associated - VNF identifier were deleted successfully. - The response body shall be empty. + 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 VNF + instance" resource. + Typically, this is due to the fact that another LCM + operation is ongoing. + The response body shall contain a ProblemDetails + structure, in which the "detail" attribute should + convey more information about the error headers: WWW-Authenticate: description: | @@ -2194,25 +1698,33 @@ components: explode: false schema: type: string - - InstantiateVnfInstance.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 VNF LCM operation - occurrence" resource corresponding to the operation. - headers: - Location: + Content-Type: description: | - The resource URI of the created subscription resource. + The MIME type of the body of the response. Reference: IETF RFC 7231 style: simple explode: false schema: type: string - format: url + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + IndividualVnfInstance.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 @@ -2227,25 +1739,50 @@ components: explode: false schema: type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string - ScaleVnfInstance.Post.202: + IndividualVnfInstance.Delete.204: description: | - 202 ACCEPTED + 204 NO CONTENT - Shall be returned when the request has been accepted for processing. + Shall be returned when the "Individual VNF instance" resource and the associated + VNF identifier were deleted successfully. The response body shall be empty. - The HTTP response shall include a "Location" HTTP header that - contains the URI of the newly-created "VNF LCM operation - occurrence" resource corresponding to the operation. headers: - Location: + WWW-Authenticate: description: | - The resource URI of the created subscription resource. + 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 - format: url + Version: + description: The used API version. + style: simple + explode: false + schema: + type: string + + IndividualVnfInstance.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 "Individual + VNF 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: WWW-Authenticate: description: | Challenge if the corresponding HTTP request has not provided authorization, or error details if the @@ -2260,15 +1797,26 @@ components: explode: false schema: type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" - ScaleToLevelVnfInstance.Post.202: + InstantiateVnfInstance.Post.202: description: | 202 ACCEPTED - Shall be returned when the request has been accepted for processing. + 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 "VNF LCM operation + contains the URI of the newly-created "Individual VNF LCM operation occurrence" resource corresponding to the operation. headers: Location: @@ -2294,24 +1842,21 @@ components: schema: type: string - ChangeFlavourVnfInstance.Post.202: + InstantiateVnfInstance.Post.409: 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 "VNF LCM operation - occurrence" resource corresponding to the operation. + 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 "Individual + VNF instance" resource is in INSTANTIATED state, + or that a required (see note) child attribute of the + "extensions" attribute has not been set. + The response body shall contain a ProblemDetails + structure, in which the "detail" attribute shall convey + more information about the error. headers: - Location: - description: | - The resource URI of the created subscription resource. - style: simple - explode: false - schema: - type: string - format: url WWW-Authenticate: description: | Challenge if the corresponding HTTP request has not provided authorization, or error details if the @@ -2326,8 +1871,19 @@ components: explode: false schema: type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" - TerminateVnfInstance.Post.202: + ScaleVnfInstance.Post.202: description: | 202 ACCEPTED @@ -2360,24 +1916,27 @@ components: schema: type: string - HealVnfInstance.Post.202: + ScaleVnfInstance.Post.404: 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 "VNF LCM operation - occurrence" resource corresponding to the operation. + 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 [8], + 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 VNF instance 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: - Location: - description: | - The resource URI of the created subscription resource. - style: simple - explode: false - schema: - type: string - format: url WWW-Authenticate: description: | Challenge if the corresponding HTTP request has not provided authorization, or error details if the @@ -2392,25 +1951,34 @@ components: explode: false schema: type: string - - OperateVnfInstance.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 "VNF LCM operation - occurrence" resource corresponding to the operation. - headers: - Location: + Content-Type: description: | - The resource URI of the created subscription resource. + The MIME type of the body of the response. Reference: IETF RFC 7231 style: simple explode: false schema: type: string - format: url + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + ScaleVnfInstance.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 "Individual + VNF instance" resource is in NOT_INSTANTIATED + state, that another lifecycle management operation is + ongoing, or that a required (see note) child attribute + of the "extensions" attribute has not been set. + 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 @@ -2425,8 +1993,19 @@ components: explode: false schema: type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" - ChangeExtConnVnfInstance.Post.202: + ScaleToLevelVnfInstance.Post.202: description: | 202 ACCEPTED @@ -2459,23 +2038,69 @@ components: schema: type: string - ChangeVnfpkgVnfInstance.Post.202: + ScaleToLevelVnfInstance.Post.404: 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 "VNF LCM operation occurrence" resource corresponding to the operation. + 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 [8], 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 VNF instance 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: - Location: + WWW-Authenticate: description: | - The resource URI of the created subscription resource. + 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 - format: url + Version: + description: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + ScaleToLevelVnfInstance.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 VNF + instance resource is in NOT_INSTANTIATED state, + that another lifecycle management operation is + ongoing, or that a required (see note) child attribute + of the "extensions" attribute has not been set. + 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 @@ -2490,22 +2115,72 @@ components: explode: false schema: type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" - VnfLcmOpOccs.Get.200: + ChangeFlavourVnfInstance.Post.202: description: | - 200 OK + 202 ACCEPTED - Shall be returned when status information for zero or more VNF lifecycle management - operation occurrences has been queried successfully. - The response body shall contain in an array the status information about zero or more - VNF lifecycle operation occurrences, as defined in clause 5.5.2.13. - If the "filter" URI parameter or one of the "all_fields", "fields" (if supported), - "exclude_fields" (if supported) or "exclude_default" URI parameters was supplied in the request, - the data in the response body shall have been transformed according to the rules specified - in clauses 5.2.2 and 5.3.2 of ETSI GS NFV-SOL 013, respectively. - If the VNFM 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. + 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 "VNF LCM operation + occurrence" resource corresponding to the operation. + headers: + Location: + description: | + The resource URI of the created subscription resource. + style: simple + explode: false + schema: + type: string + format: url + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + + ChangeFlavourVnfInstance.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 [8], 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 VNF instance 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: WWW-Authenticate: description: | @@ -2528,9 +2203,45 @@ components: explode: false schema: type: string - Link: + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + ChangeFlavourVnfInstance.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 "Individual + VNF instance" resource is in NOT_INSTANTIATED + state, that another lifecycle management operation + is ongoing, or that a required (see note) child + attribute of the "extensions" attribute has not been + set. + The response body shall contain a ProblemDetails + structure, in which the "detail" attribute shall convey + more information about the error + headers: + WWW-Authenticate: description: | - Reference to other resources. Used for paging in the present document, see clause 4.7.2.1. + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 style: simple explode: false schema: @@ -2538,15 +2249,56 @@ components: content: application/json: schema: - $ref: "./definitions/SOL003VNFLifecycleManagement_def.yaml#/definitions/VnfLcmOpOcc" + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" - IndividualVnfLcmOpOcc.Get.200: + TerminateVnfInstance.Post.202: description: | - 200 OK + 202 ACCEPTED - Shall be returned when information about a VNF LCM operation occurrence washas been read successfully. - The response body shall contain status information about a VNF lifecycle management operation occurrence - (see clause 5.5.2.13). + 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 "VNF LCM operation + occurrence" resource corresponding to the operation. + headers: + Location: + description: | + The resource URI of the created subscription resource. + style: simple + explode: false + schema: + type: string + format: url + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + + TerminateVnfInstance.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 "Individual + VNF instance" resource is in NOT_INSTANTIATED + state, that another lifecycle management operation is + ongoing, or that a required (see note) child attribute + of the "extensions" attribute has not been set. + The response body shall contain a ProblemDetails + structure, in which the "detail" attribute shall convey + more information about the error. headers: WWW-Authenticate: description: | @@ -2572,15 +2324,26 @@ components: content: application/json: schema: - $ref: "./definitions/SOL003VNFLifecycleManagement_def.yaml#/definitions/VnfLcmOpOcc" + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" - RollbackVnfLcmOpOcc.Post.202: + HealVnfInstance.Post.202: description: | 202 ACCEPTED Shall be returned when the request has been accepted for processing. - The response shall have an empty payload body. + The response body shall be empty. + The HTTP response shall include a "Location" HTTP header that + contains the URI of the newly-created "VNF LCM operation + occurrence" resource corresponding to the operation. headers: + Location: + description: | + The resource URI of the created subscription resource. + style: simple + explode: false + schema: + type: string + format: url WWW-Authenticate: description: | Challenge if the corresponding HTTP request has not provided authorization, or error details if the @@ -2596,13 +2359,113 @@ components: schema: type: string - RetryVnfLcmOpOcc.Post.202: + HealVnfInstance.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 [8], + 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 VNF instance 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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + HealVnfInstance.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 "Individual + VNF instance" resource is in NOT_INSTANTIATED + state, that another lifecycle management operation is + ongoing, or that a required (see note) child attribute + of the "extensions" attribute has not been set. + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + OperateVnfInstance.Post.202: description: | 202 ACCEPTED Shall be returned when the request has been accepted for processing. - The response shall have an empty payload body. + The response body shall be empty. + The HTTP response shall include a "Location" HTTP header that + contains the URI of the newly-created "VNF LCM operation + occurrence" resource corresponding to the operation. headers: + Location: + description: | + The resource URI of the created subscription resource. + style: simple + explode: false + schema: + type: string + format: url WWW-Authenticate: description: | Challenge if the corresponding HTTP request has not provided authorization, or error details if the @@ -2618,14 +2481,985 @@ components: schema: type: string - FailVnfLcmOpOcc.Post.200: + OperateVnfInstance.Post.404: description: | - 200 OK + 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 [8], 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 VNF instance + 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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" - Shall be returned when the state of the VNF lifecycle management operation occurrence - has been changed successfully. - The response bofyshall include a representation of the "Individual VNF lifecycle operation occurrence" - resource. + OperateVnfInstance.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 VNF + instance resource is in NOT_INSTANTIATED + state, that another lifecycle management operation + is ongoing, or that a required (see note) child + attribute of the "extensions" attribute has not been + set. + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + ChangeExtConnVnfInstance.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 "VNF LCM operation + occurrence" resource corresponding to the operation. + headers: + Location: + description: | + The resource URI of the created subscription resource. + style: simple + explode: false + schema: + type: string + format: url + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + + ChangeExtConnVnfInstance.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 + another lifecycle management operation is + ongoing, or that a required (see note) child + attribute of the "extensions" attribute has + not been set. + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + ChangeVnfpkgVnfInstance.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 "VNF LCM operation occurrence" resource corresponding to the operation. + headers: + Location: + description: | + The resource URI of the created subscription resource. + style: simple + explode: false + schema: + type: string + format: url + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + + ChangeVnfpkgVnfInstance.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 + 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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + VnfLcmOpOccs.Get.200: + description: | + 200 OK + + Shall be returned when status information for zero or more VNF lifecycle management + operation occurrences has been queried successfully. + The response body shall contain in an array the status information about zero or more + VNF lifecycle operation occurrences, as defined in clause 5.5.2.13. + If the "filter" URI parameter or one of the "all_fields", "fields" (if supported), + "exclude_fields" (if supported) or "exclude_default" URI parameters was supplied in the request, + the data in the response body shall have been transformed according to the rules specified + in clauses 5.2.2 and 5.3.2 of ETSI GS NFV-SOL 013, respectively. + If the VNFM supports alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 + for this resource, inclusion of the Link HTTP header in this response shall follow the provisions + in clause 5.4.2.3 of ETSI GS NFV-SOL 013. + headers: + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + 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: + $ref: "./definitions/SOL003VNFLifecycleManagement_def.yaml#/definitions/VnfLcmOpOcc" + + IndividualVnfLcmOpOcc.Get.200: + description: | + 200 OK + + Shall be returned when information about a VNF LCM operation occurrence washas been read successfully. + The response body shall contain status information about a VNF lifecycle management operation occurrence + (see clause 5.5.2.13). + headers: + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "./definitions/SOL003VNFLifecycleManagement_def.yaml#/definitions/VnfLcmOpOcc" + + RollbackVnfLcmOpOcc.Post.202: + description: | + 202 ACCEPTED + + Shall be returned when the request has been accepted for processing. + The response shall have an empty payload body. + 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: The used API version. + style: simple + explode: false + schema: + type: string + + RollbackVnfLcmOpOcc.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 [8], + 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 VNF 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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + RollbackVnfLcmOpOcc.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 VNF LCM operation + occurrence. + Typically, this is due to the fact that the VNF 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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + RetryVnfLcmOpOcc.Post.202: + description: | + 202 ACCEPTED + + Shall be returned when the request has been accepted for processing. + The response shall have an empty payload body. + 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: The used API version. + style: simple + explode: false + schema: + type: string + + RetryVnfLcmOpOcc.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 [8], + 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 VNF 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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + RetryVnfLcmOpOcc.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 VNF LCM operation + occurrence. + Typically, this is due to the fact that the VNF 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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + FailVnfLcmOpOcc.Post.200: + description: | + 200 OK + + Shall be returned when the state of the VNF lifecycle management operation occurrence + has been changed successfully. + The response bofyshall include a representation of the "Individual VNF lifecycle operation occurrence" + resource. + headers: + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "./definitions/SOL003VNFLifecycleManagement_def.yaml#/definitions/VnfLcmOpOcc" + + FailVnfLcmOpOcc.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 [8], + 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 VNF 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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + FailVnfLcmOpOcc.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 VNF LCM operation + occurrence. + Typically, this is due to the fact that the VNF 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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + CancelVnfLcmOpOcc.Post.202: + description: | + 202 ACCEPTED + + Shall be returned when the request has been accepted for processing. + The response shall have an empty payload body. + 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: The used API version. + style: simple + explode: false + schema: + type: string + + CancelVnfLcmOpOcc.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 [8], + 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 VNF 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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + CancelVnfLcmOpOcc.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 VNF LCM operation + occurrence. + 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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + Subscriptions.Post.201: + description: | + 201 CREATED + + Shall be returned when the subscription has been created successfully. + The response body shall contain a representation of the created "Individual subscription" resource. + The HTTP response shall include a "Location" HTTP header that points to the created + "Individual subscription" resource. + headers: + Location: + description: | + The resource URI of the created subscription resource. + style: simple + explode: false + schema: + type: string + format: url + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003VNFLifecycleManagement_def.yaml#/definitions/LccnSubscription" + + Subscriptions.Post.303: + description: | + 303 See Other + + Shall be returned if a subscription with the same + callback URI and the same filter already exists + and the policy of the VNFM 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: + Location: + description: | + The resource URI of the created subscription resource. + style: simple + explode: false + schema: + type: string + format: url + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + + 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 [8], 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 VNFM has + tested the Notification endpoint as described in + clause 5.4.20.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: + Location: + description: | + The resource URI of the created subscription resource. + style: simple + explode: false + schema: + type: string + format: url + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + Subscriptions.Get.200: + description: | + 200 OK + + Shall be returned when the list of subscriptions has been queried successfully. + The response body shall contain in an array the representations of all active subscriptions of + the functional block that invokes the method, i.e. zero or more representations of lifecycle change + notification subscriptions as defined in clause 5.5.2.16. + 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 VNFM supports alternative 2 (paging) according to clause 5.4.7.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 4.7.2.3.5.4.2.3 of ETSI GS NFV-SOL 013. + headers: + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + 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: + $ref: "../../definitions/SOL002SOL003VNFLifecycleManagement_def.yaml#/definitions/LccnSubscription" + + IndividualSubscription.Get.200: + description: | + 200 OK + + Shall be returned when information about an individual subscription has been read successfully. + The response body shall contain a representation of the "Individual subscription" resource. headers: WWW-Authenticate: description: | @@ -2651,14 +3485,14 @@ components: content: application/json: schema: - $ref: "./definitions/SOL003VNFLifecycleManagement_def.yaml#/definitions/VnfLcmOpOcc" + $ref: "../../definitions/SOL002SOL003VNFLifecycleManagement_def.yaml#/definitions/LccnSubscription" - CancelVnfLcmOpOcc.Post.202: + IndividualSubscription.Delete.204: description: | - 202 ACCEPTED + 204 NO CONTENT - Shall be returned when the request has been accepted for processing. - The response shall have an empty payload body. + Shall be returned when the "Individual subscription" resource has been deleted successfully. + The response body shall be empty. headers: WWW-Authenticate: description: | @@ -2675,14 +3509,15 @@ components: schema: type: string - Subscriptions.Post.201: + CreateVnfSnapshotTask.Post.202: description: | - 201 CREATED + 202 ACCEPTED - Shall be returned when the subscription has been created successfully. - The response body shall contain a representation of the created "Individual subscription" resource. - The HTTP response shall include a "Location" HTTP header that points to the created - "Individual subscription" resource. + Shall be returned when the request was 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 "VNF LCM operation occurrence" resource corresponding to the operation. headers: Location: description: | @@ -2706,31 +3541,28 @@ components: explode: false schema: type: string - Content-Type: - description: | - The MIME type of the body of the response. Reference: IETF RFC 7231 - style: simple - explode: false - schema: - type: string - content: - application/json: - schema: - $ref: "../../definitions/SOL002SOL003VNFLifecycleManagement_def.yaml#/definitions/LccnSubscription" - Subscriptions.Get.200: + CreateVnfSnapshotTask.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 5.5.2.16. - 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 VNFM supports alternative 2 (paging) according to clause 5.4.7.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 4.7.2.3.5.4.2.3 of ETSI GS NFV-SOL 013. + 404 NOT FOUND + + SShall 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 [8], 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 VNF instance 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: WWW-Authenticate: description: | @@ -2753,24 +3585,25 @@ components: 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: - $ref: "../../definitions/SOL002SOL003VNFLifecycleManagement_def.yaml#/definitions/LccnSubscription" + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" - IndividualSubscription.Get.200: + CreateVnfSnapshotTask.Post.409: description: | - 200 OK - - Shall be returned when information about an individual subscription has been read successfully. - The response body shall contain a representation of the "Individual subscription" resource. + 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 VNF + 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: WWW-Authenticate: description: | @@ -2796,14 +3629,27 @@ components: content: application/json: schema: - $ref: "../../definitions/SOL002SOL003VNFLifecycleManagement_def.yaml#/definitions/LccnSubscription" + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" - IndividualSubscription.Delete.204: + CreateVnfSnapshotTask.Post.422: description: | - 204 NO CONTENT - - Shall be returned when the "Individual subscription" resource has been deleted successfully. - The response body shall be empty. + 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 [8], 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 provided + identifier of the target "Individual VNF snapshot" + resource for the VNF snapshot is invalid. + In this case, the "detail" attribute in the + "ProblemDetails" structure shall convey more + information about the error headers: WWW-Authenticate: description: | @@ -2819,13 +3665,24 @@ components: explode: false schema: type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" - CreateVnfSnapshotTask.Post.202: + RevertToVnfSnapshotTask.Post.202: description: | 202 ACCEPTED - Shall be returned when the request was accepted for processing, but the processing - has not been completed. + Shall be returned when the request was 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 "VNF LCM operation occurrence" resource corresponding to the operation. @@ -2853,24 +3710,69 @@ components: schema: type: string - RevertToVnfSnapshotTask.Post.202: + RevertToVnfSnapshotTask.Post.404: description: | - 202 ACCEPTED - - Shall be returned when the request was 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 "VNF LCM operation occurrence" resource corresponding to the operation. + 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 [8], 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 VNF instance 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: - Location: + WWW-Authenticate: description: | - The resource URI of the created subscription resource. + 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 - format: url + Version: + description: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + RevertToVnfSnapshotTask.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 VNF + 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: WWW-Authenticate: description: | Challenge if the corresponding HTTP request has not provided authorization, or error details if the @@ -2885,6 +3787,17 @@ components: explode: false schema: type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" VnfSnapshots.Post.201: description: | @@ -3045,6 +3958,87 @@ components: schema: $ref: "definitions/SOL003VNFLifecycleManagement_def.yaml#/definitions/VnfSnapshotInfoModifications" + IndividualVnfSnapshot.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 VNF + snapshot" resource. + Typically, this is due to the fact another + modification is ongoing or that the "Individual VNF + snapshot" resource information is not empty due to + a previously successful modification or currently + being modified due to an underlying VNF snapshot + operation. + The response body shall contain a ProblemDetails + structure, in which the "detail" attribute should + convey more information about the error. + headers: + WWW-Authenticate: + description: | + Challenge if the corresponding HTTP request has not provided authorization, or error details if the + corresponding HTTP request has provided an invalid authorization token. + style: simple + explode: false + schema: + type: string + Version: + description: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + IndividualVnfSnapshot.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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + IndividualVnfSnapshot.Delete.204: description: | 204 NO CONTENT @@ -3068,6 +4062,47 @@ components: schema: type: string + IndividualVnfSnapshot.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 VNF snapshot + is in use by some operation such as reverting a VNF + instance to a VNF snapshot or creating a VNF + snapshot package. + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + IndividualVnfSnapshotState.Get.200: description: | 200 OK @@ -3145,3 +4180,75 @@ components: schema: type: string format: binary + + IndividualVnfSnapshotState.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 the VNF + snapshot creation process is not completed. + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + IndividualVnfSnapshotState.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 state snapshot + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string \ No newline at end of file diff --git a/src/SOL003/VNFLifecycleManagement/definitions/SOL003VNFLifecycleManagement_def.yaml b/src/SOL003/VNFLifecycleManagement/definitions/SOL003VNFLifecycleManagement_def.yaml index 31dd81a1d47a33a676f0c0d31dbb7583e7cdbfa8..a2dc06f94d6f9fb65ed6efda1ebb33974e816631 100644 --- a/src/SOL003/VNFLifecycleManagement/definitions/SOL003VNFLifecycleManagement_def.yaml +++ b/src/SOL003/VNFLifecycleManagement/definitions/SOL003VNFLifecycleManagement_def.yaml @@ -3,7 +3,21 @@ definitions: InstantiateVnfRequest: - #SOL003 location: 5.5.2.4 + description: > + This type represents request parameters for the "Instantiate VNF" operation. + It shall comply with the provisions defined in table 5.5.2.4-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 4.4.1.12). type: object required: - flavourId @@ -26,18 +40,7 @@ definitions: $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/ExtVirtualLinkData" extManagedVirtualLinks: description: > - Information about internal VLs that are managed by the NFVO. - - NOTES: - 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. - - 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 4.4.1.12). + Information about internal VLs that are managed by the NFVO. See note 1 and note 2. type: array items: $ref: "#/definitions/ExtManagedVirtualLinkData" @@ -131,9 +134,20 @@ definitions: $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" ChangeVnfFlavourRequest: - #SOL003 location: 5.5.2.7 description: > - This type represents request parameters for the "Change VNF flavour" operation. + This type represents request parameters for the "Change VNF flavour" operation. + It shall comply with the provisions defined in table 5.5.2.7-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 4.4.1.12). type: object required: - newFlavourId @@ -157,18 +171,7 @@ definitions: $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/ExtVirtualLinkData" extManagedVirtualLinks: description: > - Information about internal VLs that are managed by the NFVO. - - NOTES: - 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. - - 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 4.4.1.12). + Information about internal VLs that are managed by the NFVO. See notes 1 and 2. type: array items: $ref: "#/definitions/ExtManagedVirtualLinkData" @@ -202,22 +205,31 @@ definitions: $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/KeyValuePairs" TerminateVnfRequest: + description: > + This type represents request parameters for the "Terminate VNF" operation. + It shall comply with the provisions defined in table 5.5.2.8-1. + + NOTE: If the VNF is still in service, requesting forceful termination can + adversely impact network service. type: object required: - terminationType properties: terminationType: description: > - Indicates whether forceful or graceful termination is requested. + Indicates whether forceful or graceful termination is requested. + See note. + Permitted values: - * FORCEFUL: The VNFM will shut down the VNF and release the - resources immediately after accepting the request. - * GRACEFUL: The VNFM will first arrange to take the VNF out of - service after accepting the request. Once the operation of taking - the VNF out of service finishes (irrespective of whether it has - succeeded or failed) or once the timer value specified in the - "gracefulTerminationTimeout" attribute expires, the VNFM will shut - down the VNF and release the resources. + - FORCEFUL: The VNFM will shut down the VNF and release the + resources immediately after accepting the request. + - GRACEFUL: The VNFM will first arrange to take the VNF out of + service after accepting the request. Once the operation + of taking the VNF out of service finishes (irrespective + of whether it has succeeded or failed) or once the timer + value specified in the "gracefulTerminationTimeout" + attribute expires, the VNFM will shut down the VNF and + release the resources. type: string enum: - FORCEFUL @@ -256,8 +268,18 @@ definitions: OperateVnfRequest: description: > - This type represents request parameters for the "Operate VNF" operation. - type: object + This type represents request parameters for the "Operate VNF" operation. + It shall comply with the provisions defined in table 5.5.2.10-1. + + 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" + 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 has been set to "FORCEFUL", + when the "changeStateTo" attribute is equal to "STOPPED" and the "stopType" attribute + is absent. required: - changeStateTo properties: @@ -268,32 +290,12 @@ definitions: $ref: "../../../definitions/SOL002SOL003VNFLifecycleManagement_def.yaml#/definitions/VnfOperationalStateType" stopType: description: > - It signals whether forceful or graceful stop is requested. - 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” 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. + 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. - 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” 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. + The time interval (in seconds) to wait for the VNF to be taken out of service + during graceful stop, before stopping the VNF. See note. type: integer additionalParams: description: > @@ -336,10 +338,21 @@ definitions: $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/KeyValuePairs" ChangeCurrentVnfPkgRequest: - #SOL003 location: 5.5.2.11a description: > This type represents request parameters for the "Change current VNF package" - operation to replace the VNF package on which a VNF instance is based. + operation to replace the VNF package on which a VNF instance is based. + It shall comply with the provisions defined in table 5.5.2.11a-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 4.4.1.12). type: object required: - vnfdId @@ -358,17 +371,7 @@ definitions: $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/ExtVirtualLinkData" extManagedVirtualLinks: description: > - Information about internal VLs that are managed by the NFVO. - - NOTES: - 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. - 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 4.4.1.12). + Information about internal VLs that are managed by the NFVO. See notes 1 and 2. type: array items: $ref: "#/definitions/ExtManagedVirtualLinkData" @@ -452,12 +455,18 @@ definitions: VnfInfoModifications: description: > - This type represents attribute modifications that were performed on an - "Individual VNF instance" resource. The attributes that can be included - consist of those requested to be modified explicitly in the - "VnfInfoModificationRequest" data structure, and additional attributes - of the "VnfInstance" data structure that were modified implicitly e.g. - when modifying the referenced VNF package. + This type represents attribute modifications that were performed on an "Individual + VNF instance" resource. The attributes that can be included consist of those requested + to be modified explicitly in the "VnfInfoModificationRequest" data structure, and + additional attributes of the "VnfInstance" data structure that were modified implicitly + e.g. when modifying the referenced VNF package. + The "VnfInfoModifications" data type shall comply with the provisions defined in table + 5.5.2.12a-1. + + NOTE: If present, this attribute (which depends on the value of the "vnfdId" attribute) + was modified implicitly following a request to modify the "vnfdId" attribute, by + copying the value of this attribute from the VNFD in the VNF Package identified by + the "vnfdId" attribute. type: object properties: vnfInstanceName: @@ -474,6 +483,8 @@ definitions: description: > If present, this attribute signals modifications of the "vnfConfigurableProperties" attribute in "VnfInstance". + + In addition, the provisions in clause 5.7 shall apply. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/KeyValuePairs" metadata: description: > @@ -484,6 +495,8 @@ definitions: description: > If present, this attribute signals modifications of the "extensions" attribute in "VnfInstance". + + In addition, the provisions in clause 5.7 shall apply. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/KeyValuePairs" vimConnectionInfo: description: > @@ -499,38 +512,23 @@ definitions: $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" vnfProvider: description: > - If present, this attribute signals modifications of the - "vnfProvider" attribute in "VnfInstance". - If present, this attribute (which depends on the value of the - "vnfPkgId" attribute) was modified implicitly following a request to - modify the "vnfPkgId" attribute, by copying the value of this - attribute from the VNFD in the VNF Package identified by the - "vnfPkgId” attribute. + If present, this attribute signals modifications of the "vnfProvider" attribute + in "VnfInstance". See note. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/String" vnfProductName: description: > - If present, this attribute signals modifications of the - "vnfProductName" attribute in "VnfInstance". - If present, this attribute (which depends on the value of the - "vnfPkgId" attribute) was modified implicitly following a request to - modify the "vnfPkgId" attribute, by copying the value of this - attribute from the VNFD in the VNF Package identified by the - "vnfPkgId” attribute. + If present, this attribute signals modifications of the "vnfProductName" attribute + in "VnfInstance". See note. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/String" vnfSoftwareVersion: description: > - If present, this attribute signals modifications of the - "vnfSoftwareVersion" attribute in "VnfInstance". + If present, this attribute signals modifications of the "vnfSoftwareVersion" attribute + in "VnfInstance". See note. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Version" vnfdVersion: description: > - If present, this attribute signals modifications of the - "vnfdVersion" attribute in "VnfInstance". - If present, this attribute (which depends on the value of the - "vnfPkgId" attribute) was modified implicitly following a request to - modify the "vnfPkgId" attribute, by copying the value of this - attribute from the VNFD in the VNF Package identified by the - "vnfPkgId” attribute. + If present, this attribute signals modifications of the "vnfdVersion" attribute + in "VnfInstance". See note. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Version" StopType: @@ -575,17 +573,18 @@ definitions: CreateVnfSnapshotInfoRequest: description: | - This type represents request parameters for the creation of an "Individual VNF snapshot" resource which can be - populated with content obtained by invoking the "Create VNF snapshot" LCM operation or extracted from a - VNF snapshot package. It shall comply with the provisions defined in table 5.5.2.20-1. + This type represents request parameters for the creation of an "Individual VNF snapshot" + resource which can be populated with content obtained by invoking the "Create VNF snapshot" + LCM operation or extracted from a VNF snapshot package. It shall comply with the provisions + defined in table 5.5.2.20-1. + + NOTE: The present attribute shall be provided if the "Individual VNF snapshot" resource is + requested to be created as part of a VNF snapshot package extraction. type: object properties: vnfSnapshotPkgId: description: | - Identifier of the VNF snapshot package information held by the NFVO. - - The present attribute shall be provided if the "Individual VNF snapshot" resource is requested to be created - as part of a VNF snapshot package extraction. + Identifier of the VNF snapshot package information held by the NFVO. See note. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" vnfSnapshot: description: | @@ -652,7 +651,36 @@ definitions: VnfInstance: description: > - This type represents a VNF instance. + This type represents a VNF instance. It shall comply with the provisions defined in table 5.5.2.2-1. + + NOTE: Clause B.3.2 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: Upon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes + of "vnfConfigurableProperties", "metadata" and "extensions" that were declared in the VNFD with a defined + initial value. The defined initial values can be declared in the VNFD, and/or, in case of "metadata", + obtained from the "CreateVnfRequest" structure. Child attributes of "vnfConfigurableProperties", + "metadata" and "extensions" that have no defined initial value shall not be created, in order to be + consistent with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null + values as deletion request. + NOTE 5: It is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case of a + multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding to the same + VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc and externally-managed + multi-site VL instance (refer to clause 5.5.3.3). + NOTE 6: Even though externally-managed internal VLs are also used for VNF-internal connectivity, they shall + not be listed in the "vnfVirtualLinkResourceInfo" attribute as this would be redundant. type: object required: - id @@ -679,15 +707,7 @@ definitions: type: string vnfdId: description: > - Identifier of the VNFD on which the VNF instance is based. - - 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 not 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. + Identifier of the VNFD on which the VNF instance is based. See note 1. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" vnfProvider: description: > @@ -707,43 +727,37 @@ definitions: $ref: "../../..//definitions/SOL002SOL003_def.yaml#/definitions/Version" vnfConfigurableProperties: description: > - Current values of the configurable properties of the VNF instance. - Configurable properties referred in this attribute 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. - These configurable properties can be initialized with default values - from the VNFD. - Configurable properties can be modified with values passed in the request - structures of certain LCM operations, such as the InstantiateVnfRequest - structure. - Further, these configurable properties can be created, modified or - deleted with the PATCH method. + 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. The declaration + of configurable properties in the VNFD can optionally contain the specification of initial values. + See notes 2, 3 and 4. The VNFM shall reject requests to write configurable properties that are + not declared in the VNFD with a "422 Unprocessable entity" error response as defined in clause + 6.4 of ETSI GS NFV SOL 013. + + 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. - NOTE: Upon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes - of "vnfConfigurableProperties", "metadata" and "extensions" that were declared in the VNFD with a defined - initial value. The defined initial values can be declared in the VNFD, and/or, in case of "metadata", - obtained from the "CreateVnfRequest" structure. Child attributes of "vnfConfigurableProperties", "metadata" - and "extensions" that have no defineddeclared initial value shall not be created, in order to be consistent - with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null values as deletion - request. + These configurable properties can be initialized with default values from the VNFD (see note 4). + + Configurable properties can be modified with values passed in the request structures of certain + LCM operations, such as the InstantiateVnfRequest structure. + + Further, these configurable properties can be created, modified or deleted with the PATCH method. + In addition, the provisions in clause 5.7 shall apply. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/KeyValuePairs" vimConnectionInfo: description: > @@ -808,6 +822,15 @@ definitions: minItems: 1 items: $ref: "../../../definitions/SOL002SOL003VNFLifecycleManagement_def.yaml#/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 + minItems: 1 + items: + $ref: "../../../definitions/SOL002SOL003VNFLifecycleManagement_def.yaml#/definitions/VipCpInfo" extVirtualLinkInfo: description: > Information about the external VLs the VNF instance is connected to. @@ -816,13 +839,7 @@ definitions: $ref: "../../../definitions/SOL002SOL003VNFLifecycleManagement_def.yaml#/definitions/ExtVirtualLinkInfo" extManagedVirtualLinkInfo: description: > - Information about the externally-managed internal VLs of the VNF instance. - - NOTE: It is possible to have several ExtManagedVirtualLinkInfo for the same - VNF internal VL in case of a multi-site VNF spanning several VIMs. The set of - ExtManagedVirtualLinkInfo corresponding to the same VNF internal VL shall indicate - so by referencing to the same VnfVirtualLinkDesc and externally-managed multi-site - VL instance (refer to clause 5.5.3.3). + Information about the externally-managed internal VLs of the VNF instance. See note 5 and note 6. type: array items: $ref: "#/definitions/ExtManagedVirtualLinkInfo" @@ -847,10 +864,9 @@ definitions: type: array items: $ref: "#/definitions/VnfcResourceInfo" - virtualLinkResourceInfo: + vnfVirtualLinkResourceInfo: description: > - Information about the virtualised network resources used by the VLs - of the VNF instance. + Information about the virtualised network resources used by the VLs of the VNF instance. See note 6. type: array items: $ref: "#/definitions/VnfVirtualLinkResourceInfo" @@ -863,51 +879,49 @@ definitions: metadata: description: > Additional VNF-specific attributes that provide metadata describing the VNF instance. - These attributes represent values that are stored persistently in the VnfInstance structure - for consumption by functional blocks that invoke the VNF lifecycle management interface. - They are not consumed by the VNFM, or the lifecycle management scripts. - Modifying the values of these attributes has no effect on the VNF instance, it only affects - the information represented in the VnfInstance structure. - Metadata that are writeable are the VNF provider foresees are expected to be declared in the VNFD. - The declaration of metadata in the VNFD can optionally contain the specification of initial values. + + These attributes represent values that are stored persistently in the VnfInstance structure for + consumption by functional blocks that invoke the VNF lifecycle management interface. They are not + consumed by the VNFM, or the lifecycle management scripts. + + Modifying the values of these attributes has no 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. The declaration + of metadata in the VNFD can optionally contain the specification of initial values. See notes 2 and 4. The VNFM shall accept requests to write metadata that are not declared in the VNFD. - These attributes can be initialized with default values from the VNFD or with values + + These attributes can be initialized with default values from the VNFD (see note 4) or with values passed in the CreateVnfRequest structure (see clause 5.4.2.3.1). - This attributeThese attributes can be created, modified or removed with the PATCH method. - - ETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. - Upon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes - of "vnfConfigurableProperties", "metadata" and "extensions" that were declared in the VNFD with - a defined initial value. Child attributes of "vnfConfigurableProperties", "metadata" and "extensions" - that have no declared initial value shall not be created, in order to be consistent with the semantics - of the JSON Merge Patch method (see IETF RFC 7396) that interprets null values as deletion request. + + These attributes can be created, modified or removed with the PATCH method. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/KeyValuePairs" extensions: description: > Additional VNF-specific attributes that affect the lifecycle management of this VNF instance. - These attributes represent values that are stored persistently in the VnfInstance structure - for consumption by the VNFM or the lifecycle management scripts during the execution of - VNF lifecycle management operations. - All extensions that are allowed for the VNF are declared in the VNFD. The declaration of an extension - in the VNFD contains information on whether its presence is optional or required, and optionally - can specify an initial value. See note 2 and note 4. The VNFM shall reject requests to write extension - attributes that are not declared in the VNFD with a "422 Unprocessable entity" error response as defined - in clause 6.4 of ETSI GS NFV-SOL 013. - Modifying the values of these attributes has no direct effect on the VNF instance; however, the modified - attribute values can be considered during subsequent VNF lifecycle management operations, which means that + + These attributes represent values that are stored persistently in the VnfInstance structure for + consumption by the VNFM or the lifecycle management scripts during the execution of VNF lifecycle + management operations. + + All extensions that are allowed for the VNF are declared in the VNFD. The declaration of an extension + in the VNFD contains information on whether its presence is optional or required, and optionally can + specify an initial value. See notes 2 and 4. The VNFM shall reject requests to write extension attributes + that are not declared in the VNFD with a "422 Unprocessable entity" error response as defined in clause + 6.4 of ETSI GS NFV-SOL 013. + + Modifying the values of these attributes has no direct effect on the VNF instance; however, the modified + attribute values can be considered during subsequent VNF lifecycle management operations, which means that the modified values can indirectly affect the configuration of the VNF instance. - These attributes can be initialized with default values from the VNFD. - These attributes can be modified with values passed in the request structures of certain LCM operations, + + These attributes can be initialized with default values from the VNFD (see note 4). + + These attributes can be modified with values passed in the request structures of certain LCM operations, such as the InstantiateVnfRequest structure. + Further, these attributes can be created, modified or deleted with the PATCH method. - - NOTE: Upon creation of the VnfInstance structure, the VNFM shall create and initialize all child attributes - of "vnfConfigurableProperties", "metadata" and "extensions" that were declared in the VNFD with a defined - initial value. The defined initial values can be declared in the VNFD, and/or, in case of "metadata", - obtained from the "CreateVnfRequest" structure. Child attributes of "vnfConfigurableProperties", "metadata" - and "extensions" that have no defineddeclared initial value shall not be created, in order to be consistent - with the semantics of the JSON Merge Patch method (see IETF RFC 7396) that interprets null values as deletion - request. + + In addition, the provisions in clause 5.7 shall apply. _links: description: > Links to resources related to this resource. @@ -1077,8 +1091,17 @@ definitions: VnfcResourceInfo: description: > - This type represents the information on virtualised compute and storage - resources used by a VNFC in a VNF instance. + This type represents the information on virtualised compute and storage resources + used by a VNFC in a VNF instance. It shall comply with the provisions defined in + table 5.5.3.5-1. + + 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 @@ -1091,7 +1114,7 @@ definitions: $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/IdentifierInVnf" vduId: description: > - Reference to the applicable VDU in the VNFD. + Reference to the applicable VDU in the VNFD. See note 1. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/IdentifierInVnfd" vnfdId: description: > @@ -1124,12 +1147,9 @@ definitions: $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" vnfcCpInfo: description: > - All the CPs of the VNFC instance. - Shall be present when that particular CP of the VNFC instance is exposed as an external CP of the VNF instance - or is connected to an external CP of the VNF instance. - A VNFC CP is "connected to" an external CP if the VNFC CP is connected to an internal VL that exposes an external CP. - A VNFC CP is "exposed as" an external CP if it is connected directly to an external VL. - May be present otherwise. + 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. See note 2. May be present otherwise. type: array items: type: object @@ -1144,32 +1164,41 @@ definitions: $ref: "../../../definitions/SOL002SOL003_def.yaml#/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/SOL002SOL003_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 (see note) and shall be absent otherwise. - - NOTE: 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/SOL002SOL003_def.yaml#/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. + Network protocol information for this CP. May be omitted if the VNFC CP is exposed as an external CP. + See note 3. type: array items: $ref: "../../../definitions/SOL002SOL003VNFLifecycleManagement_def.yaml#/definitions/CpProtocolInfo" vnfLinkPortId: description: > - Identifier of the "VnfLinkPortInfo" 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 "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) + of the VNF instance and shall be absent otherwise. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/IdentifierInVnf" metadata: description: > Metadata about this CP. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/KeyValuePairs" + + 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/SOL002SOL003_def.yaml#/definitions/IdentifierInVnf" + + metadata: description: > Metadata about this resource. @@ -1315,7 +1344,16 @@ definitions: VnfcSnapshotInfo: description: > - This type represents a VNFC snapshot. + This type represents a VNFC snapshot. It shall comply with the provisions defined in table 5.5.3.19-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 @@ -1327,6 +1365,8 @@ definitions: 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 attribute also identifies the compute snapshot image associated to this VNFC snapshot within the context of + a referred VNF snapshot. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/IdentifierLocal" vnfcInstanceId: description: > @@ -1349,11 +1389,7 @@ definitions: $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/IdentifierInVnf" 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 o - f the "Create VNF snapshot task". + Reference to a compute snapshot resource. See note 1. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/ResourceHandle" storageSnapshotResources: description: > @@ -1368,15 +1404,12 @@ definitions: description: > 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/SOL002SOL003_def.yaml#/definitions/IdentifierInVnf" storageSnapshotResource: description: > - Reference to a storage snapshot resource. - 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". + Reference to a storage snapshot resource. See note 2. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/KeyValuePairs" userDefinedData: description: > @@ -1439,8 +1472,14 @@ definitions: AffectedVnfc: description: > - This type provides information about added, deleted, modified and - temporary VNFCs. + This type provides information about added, deleted, modified and temporary VNFCs. + It shall comply with the provisions in table 5.5.3.13-1. + + NOTE: The "resourceDefinitionId" attribute provides information to the API consumer + (i.e. the NFVO) to assist in correlating the resource changes performed during + the LCM operation with the granted resources in a specific Grant exchange, which + is identified by the "grantId" available in the "Individual VNF lifecycle management + operation occurrence" and the "id" in the "Individual Grant". type: object required: - id @@ -1486,9 +1525,8 @@ definitions: $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/ResourceHandle" resourceDefinitionId: description: > - The identifier of the "ResourceDefinition" in the granting exchange - related to the LCM operation occurrence. It shall be present when - an applicable GrantInfo for thegranted resource exists. See note. + The identifier of the "ResourceDefinition" in the granting exchange related to the LCM operation occurrence. + It shall be present when an applicable GrantInfo for thegranted resource exists. See note. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/IdentifierLocal" zoneId: description: > @@ -1535,8 +1573,29 @@ definitions: VnfLcmOpOcc: description: > - This type represents a VNF lifecycle management operation occurrence. Shall be set to the value of the "id" - attribute in the "Grant" representing the associated "Individual Grant", if such grant exists. + This type represents a VNF lifecycle management operation occurrence. + It shall comply with the provisions defined in table 5.5.2.13-1. + + NOTE 1: This allows the NFVO to obtain the information contained in the latest + "result" notification if it has not received it due to an error or a + wrongly configured subscription filter. + NOTE 2: Not more than one of changedInfo and modificationsTriggeredByVnfPkgChange + shall be present. + NOTE 3: For a particular affected VL, there shall be as many "AffectedVirtualLink" + entries as needed for signalling the different types of changes, i.e. one + per virtual link and change type. For instance, in the case of signaling + affected VL instances involving the addition of a particular VL instance + with links ports, one "AffectedVirtualLink" entry signals the addition of + the VL by using the "changeType" attribute of "AffectedVirtualLink" structure + equal to "ADDED", and another "AffectedVirtualLink" entry signals the addition + of externally visible VNF link ports of the VL by using the "changeType" equal + to "LINK_PORT_ADDED". + NOTE 4: A coordination action has timed out if the VNFM 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 5: 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" and "ROLLED_BACK". type: object oneOf: - required: @@ -1596,7 +1655,9 @@ 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 following mapping between operationType and the + operation. In addition, the provisions in clause 5.7 shall apply. + + The following mapping between operationType and the data type of this attribute shall apply: * INSTANTIATE: InstantiateVnfRequest * SCALE: ScaleVnfRequest @@ -1639,81 +1700,159 @@ definitions: properties: affectedVnfcs: description: > - Information about VNFC instances that were affected during the - lifecycle operation. - This allows the API consumer to obtain the information contained in - the latest "result" notification if it has not received it due to an - error or a wrongly configured subscription filter. + Information about VNFC instances that were affected during the lifecycle operation. + See note 1. type: array items: $ref: "#/definitions/AffectedVnfc" affectedVirtualLinks: description: > - Information about VL instances that were affected during the - lifecycle operation. - This allows the API consumer to obtain the information contained in - the latest "result" notification if it has not received it due to an - error or a wrongly configured subscription filter. - For a particular affected VL, there shall be as many "AffectedVirtualLink" - entries as needed for signalling the different types of changes, i.e., - one per virtual link and change type. For instance, in the case of - signaling affected VL instances involving the addition of a particular VL - instance with links ports, one "AffectedVirtualLink" entry signals the - addition of the VL by using the "changeType" attribute of "AffectedVirtualLink" - structure equal to "ADDED", and another "AffectedVirtualLink" entry signals - the addition of VNF link ports of the VL by using the "changeType" equal to - "LINK_PORT_ADDED". + Information about VL instances that were affected during the lifecycle operation. + See notes 1 and 3. type: array items: $ref: "#/definitions/AffectedVirtualLink" affectedExtLinkPorts: description: > - Information about external VNF link ports that were affected during the lifecycle operation. This allows - the API consumer to obtain the information contained in the latest "result" notification if it has not - received it due to an error or a wrongly configured subscription filter. + Information about external VNF link ports that were affected during the lifecycle operation. + See note 1. type: array items: $ref: "#/definitions/AffectedExtLinkPort" affectedVirtualStorages: description: > - Information about virtualised storage instances that were affected - during the lifecycle operation. - This allows the API consumer to obtain the information contained - in the latest "result" notification if it has not received it due to - an error or a wrongly configured subscription filter. + Information about virtualised storage instances that were affected during the lifecycle operation. + See note 1. type: array items: $ref: "#/definitions/AffectedVirtualStorage" changedInfo: description: > - Information about the changed VNF instance information, including - VNF configurable properties, if applicable. - This allows the NFVO to obtain the information contained in the - latest "result" notification if it has not received it due to an - error or a wrongly configured subscription filter. + Information about the changed VNF instance information, including VNF configurable properties, + if applicable. See note 1 and note 2. $ref: "#/definitions/VnfInfoModifications" + affectedVipCps: + description: > + Information about virtual IP CP instances that were affected during + the execution of the lifecycle management operation. + type: array + items: + $ref: "../../../definitions/SOL002SOL003VNFLifecycleManagement_def.yaml#/definitions/AffectedVipCp" changedExtConnectivity: description: > - Information about changed external connectivity, if applicable. - This allows the NFVO to obtain the information contained in the - latest "result" notification if it has not received it due to an - error or a wrongly configured subscription filter. + Information about changed external connectivity, if applicable. See note 1. type: array items: $ref: "../../../definitions/SOL002SOL003VNFLifecycleManagement_def.yaml#/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". - This allows the API consumer to obtain the information contained in the latest "result" notification if it has - not received it due to an error or a wrongly configured subscription filter. - Not more than one of changedInfo 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 notes 1 and 2. $ref: "../../../definitions/SOL002SOL003VNFLifecycleManagement_def.yaml#/definitions/ModificationsTriggeredByVnfPkgChange" vnfSnapshotInfoId: description: > Identifier of the "individual VNF snapshot" resource. Shall be present if applicable to the type of LCM operation, i.e., if the value of the "operation" attribute is either "CREATE_SNAPSHOT" or "REVERT_TO_SNAPSHOT". $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" + lcmCoordinations: + description: > + Information about LCM coordination actions (see clause 10 in ETSI GS NFV-SOL002) related to this LCM operation occurrence. + type: array + items: + type: object + required: + - id + - coordinationActionName + - startTime + - endpointType + properties: + id: + description: > + Identifier of this coordination action. + $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" + coordinationActionName: + description: > + Indicator of the actual coordination action. + $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" + coordinationResult: + description: > + The result of executing the coordination action which also implies the action to be performed by the VNFM 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 4). + $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/LcmCoordResultType" + startTime: + description: > + The time when the VNFM has received the confirmation that the coordination action has been started. + $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/DateTime" + endTime: + description: > + The time when the VNFM 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 4) and shall be absent if the coordination is ongoing. + $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/DateTime" + 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/SOL002SOL003_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. EM) + • VNF: coordination with the VNF instance + type: string + enum: + - MGMT + - VNF + rejectedLcmCoordinations: + description: > + Information about LCM coordination actions (see clause 10 in ETSI GS NFV-SOL002) that were rejected + by 503 error which means they can be tried again after a delay. See note 5. + type: array + items: + type: object + required: + - coordinationActionName + - rejectionTime + - endpointType + - delay + properties: + coordinationActionName: + description: > + Indicator of the actual coordination action. + $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" + rejectionTime: + description: > + The time when the VNFM has received the 503 response that rejects the actual coordination. + $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/DateTime" + delay: + description: > + The end of the delay period, as calculated from the startTime and "Retry-After" header. + $ref: "../../../definitions/SOL002SOL003_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. EM) + • VNF: coordination with the VNF instance + type: string + enum: + - MGMT + - VNF + warnings: + description: > + Warning messages that were generated while the operation was executing. + + If the operation has included 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. @@ -1766,7 +1905,13 @@ definitions: AffectedExtLinkPort: description: > - This type provides information about added and deleted external link ports (link ports attached to external virtual links). + This type provides information about added and deleted external link ports (link ports attached to external virtual links). + It shall comply with the provisions in table 5.5.3.14a-1. + + NOTE: The "resourceDefinitionId" attribute provides information to the API consumer (i.e. the NFVO) to assist in correlating + the resource changes performed during the LCM operation with the granted resources in a specific Grant exchange, which + is identified by the "grantId" available in the "Individual VNF lifecycle management operation occurrence" and the "id" + in the "Individual Grant". type: object required: - id @@ -1800,49 +1945,64 @@ definitions: $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/ResourceHandle" resourceDefinitionId: description: > - The identifier of the "ResourceDefinition" in the granting exchange related to the LCM operation occurrence. - It shall be present when an applicable GrantInfo for the granted resource exists. - The "resourceDefinitionId" attribute provides information to the API consumer (i.e. the NFVO) to assist in - correlating the resource changes performed during the LCM operation with the granted resources in a - specific Grant exchange, which is identified by the "grantId" available in the "Individual VNF lifecycle - management operation occurrence" and the "id" in the "Individual Grant". + The identifier of the "ResourceDefinition" in the granting exchange related to the LCM operation occurrence. + It shall be present when an applicable GrantInfo for the granted resource exists. See note. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/IdentifierLocal" VnfLcmOperationOccurrenceNotification: description: > - This type represents a VNF lifecycle management operation occurrence - notification, which informs the receiver of changes in the VNF - lifecycle caused by a VNF LCM operation occurrence. The support of the - notification is mandatory. - This notification shall be triggered by the VNFM when there is a change in the state of a - VNF LCM operation occurrence that changes the VNF lifecycle, includingwhich represents an - occurrence of one the following LCM operations: - * Instantiation of the VNF - * Scaling of the VNF instance (including auto-scaling) - * Healing of the VNF instance (including auto-healing) - * Change of the state of the VNF instance (i.e. Operate VNF) - * Change of the deployment flavour of the VNF instance - * Change of the external connectivity of the VNF instance - * Termination of the VNF instance - * Modification of VNF instance information and/or VNF configurable - properties through the "PATCH" method on the "Individual VNF instance" - resource - * Creation of a VNF snapshot - * Reversion of the VNF instance to a VNF snapshot. - Clause 5.6.2 defines the states and state transition of a VNF LCM operation occurrence, - and also specifies details of the notifications to be emitted at each state transition. - If this is the initial notification about the start of a VNF LCM operation occurrence, - it is assumed that the notification is sent by the VNFM before any action (including sending the grant request) - is taken as part of the LCM operation. Due to possible race conditions, the "start" notification, - the grant request and the LCM operation acknowledgment (i.e. the "202 Accepted" response) - can arrive in any order at the NFVO, and the NFVO shall be able to handle such a situation. - If this is a notification about a final or intermediate result state of a VNF LCM operation occurrence, - the notification shall be sent after all related actions of the LCM operation that led - to this state have been executed. - The new state shall be set in the "Individual VNF LCM operation occurrence" resource before - the notification about the state change is sent. - See clause 5.6.2.2 for further provisions regarding sending this notification, including - in cases of handling LCM operation errors. + This type represents a VNF lifecycle management operation occurrence notification, which + informs the receiver of changes in the VNF lifecycle caused by a VNF LCM operation occurrence. + It shall comply with the provisions defined in table 5.5.2.17-1. + The support of the notification is mandatory. + + This notification shall be triggered by the VNFM when there is a change in the state of a VNF LCM + operation occurrence that changes the VNF lifecycle, which represents an occurrence of one the + following LCM operations: + - Instantiation of the VNF + - Scaling of the VNF instance (including auto-scaling) + - Healing of the VNF instance (including auto-healing) + - Change of the state of the VNF instance (i.e. Operate VNF) + - Change of the deployment flavour of the VNF instance + - Change of the external connectivity of the VNF instance + - Change of the current VNF package + - Termination of the VNF instance + - Modification of VNF instance information and/or VNF configurable properties through the "PATCH" + method on the "Individual VNF instance" resource + - Creation of a VNF snapshot + - Reversion of the VNF instance to a VNF snapshot + + Clause 5.6.2 defines the states and state transition of a VNF LCM operation occurrence, and also + specifies details of the notifications to be emitted at each state transition. + If this is the initial notification about the start of a VNF LCM operation occurrence, it is assumed + that the notification is sent by the VNFM before any action (including sending the grant request) is + taken as part of the LCM operation. Due to possible race conditions, the "start" notification, the grant + request and the LCM operation acknowledgment (i.e. the "202 Accepted" response) can arrive in any order + at the NFVO, and the NFVO shall be able to handle such a situation. + If this is a notification about a final or intermediate result state of a VNF LCM operation occurrence, + the notification shall be sent after all related actions of the LCM operation that led to this state have + been executed. + The new state shall be set in the "Individual VNF LCM operation occurrence" resource before the notification + about the state change is sent. + The amount of information provided in the LCM operation occurrence notifications to be issued by the VNFM when + a particular subscription matches can be controlled by the API consumer using the "verbosity" attribute in the + subscription request (see clause 5.5.2.15). The "verbosity" setting in a particular individual subscription shall + only apply to the LCM operation occurrence notifications triggered by that subscription. However, it shall not + affect the amount of information in the "VnfLcmOpOcc" structure (see clause 5.5.2.13) which represents the "Individual + LCM operation occurrence" resource associated with each of the notifications. + See clause 5.6.2.2 for further provisions regarding sending this notification, including in cases of handling LCM + operation errors. + + NOTE 1: Shall be present if the "notificationStatus" is set to "RESULT", the "verbosity" attribute is set to "FULL" + and the operation has performed any resource modification. Shall be absent otherwise. This attribute contains + information about the cumulative changes to virtualised resources that were performed so far by the VNF LCM + operation occurrence and by any of the error handling procedures for that operation occurrence. + NOTE 2: For a particular affected VL, there shall be as many "AffectedVirtualLink" entries as needed for signalling + the different types of changes, i.e. one per virtual link and change type. For instance, in the case of signaling + affected VL instances involving the addition of a particular VL instance with links ports, one "AffectedVirtualLink" + entry signals the addition of the VL by using the "changeType" attribute of "AffectedVirtualLink" structure equal to + "ADDED", and another "AffectedVirtualLink" entry signals the addition of externally visible VNF link ports of the VL + by using the "changeType" equal to "LINK_PORT_ADDED". type: object required: - id @@ -1926,63 +2086,25 @@ definitions: $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" affectedVnfcs: description: > - Information about VNFC 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 VNF LCM - operation occurrence and by any of the error handling procedures - for that operation occurrence. + Information about VNFC instances that were affected during the lifecycle operation. See note 1. type: array items: $ref: "#/definitions/AffectedVnfc" affectedVirtualLinks: description: > - Information about VL instances that were affected during the - lifecycle operation. - Shall be present if the "notificationStatus" is set to "RESULT" and - the operation has performed any resource modification. Shall be - absent otherwise. This attribute contains information about the - cumulative changes to virtualised resources that were performed so - far by the VNF LCM operation occurrence and by any of the error - handling procedures for that operation occurrence. - For a particular affected VL, there shall be as many "AffectedVirtualLink" - entries as needed for signalling the different types of changes, i.e., - one per virtual link and change type. For instance, in the case of signaling - affected VL instances involving the addition of a particular VL instance with - links ports, one "AffectedVirtualLink" entry signals the addition of the VL by - using the "changeType" attribute of "AffectedVirtualLink" structure equal to - "ADDED", and another "AffectedVirtualLink" entry signals the addition of VNF - link ports of the VL by using the "changeType" equal to "LINK_PORT_ADDED". + Information about VL instances that were affected during the lifecycle operation. See note 1 and note 2. type: array items: $ref: "#/definitions/AffectedVirtualLink" affectedExtLinkPorts: description: > - Information about external VNF link ports that were affected during - the lifecycle operation. - Shall be present if the "notificationStatus" is set to "RESULT", - the "verbosity" attribute is set to "FULL" and the operation has - performed any resource modification. Shall be absent otherwise. - This attribute contains information about the cumulative changes - to virtualised resources that were performed so far by the VNF LCM - operation occurrence and by any of the error handling procedures - for that operation occurrence. + Information about external VNF link ports that were affected during the lifecycle operation. See note 1. type: array items: $ref: "#/definitions/AffectedExtLinkPort" affectedVirtualStorages: description: > - Information about virtualised storage instances that were affected - during the lifecycle operation. - Shall be present if the "notificationStatus" is set to "RESULT" and - the operation has performed any resource modification. Shall be - absent otherwise. This attribute contains information about the - cumulative changes to virtualised resources that were performed so - far by the VNF LCM operation occurrence and by any of the error - handling procedures for that operation occurrence. + Information about virtualised storage instances that were affected during the lifecycle operation. See note 1. type: array items: $ref: "#/definitions/AffectedVirtualStorage" @@ -1996,6 +2118,20 @@ definitions: any changes to VNF instance information, including VNF configurable properties. Shall be absent otherwise. $ref: "#/definitions/VnfInfoModifications" + + affectedVipCps: + description: > + Information about virtual IP CP instances that were affected during the execution of the lifecycle management + operation, if this notification represents the result of a lifecycle management operation occurrence. + + Shall be present if the "notificationStatus" is set to "RESULT", the "verbosity" attribute is set to "FULL" + and the operation has made any changes to the VIP CP instances of the VNF instance. Shall be absent otherwise. + Only information about VIP CP instances that have been added, deleted or modified shall be provided. + type: array + items: + $ref: "../../../definitions/SOL002SOL003VNFLifecycleManagement_def.yaml#/definitions/AffectedVipCp" + + changedExtConnectivity: description: > Information about changed external connectivity, if this notification @@ -2034,6 +2170,15 @@ definitions: description: > This type provides information about added, deleted, modified and temporary VLs, and added or removed VNF link ports. + + NOTE 1: When signalling the addition (LINK_PORT_ADDED) or removal (LINK_PORT_REMOVED) of VNF link ports, + the "networkResource" and "resourceDefinitionId" attributes refer to the affected virtual link + instance, not the link port instance. The resource handles of the affected VNF link ports can be + found by dereferencing the identifiers in the "vnfLinkPortIds" attribute. + NOTE 2: The "resourceDefinitionId" attribute provides information to the API consumer (i.e. the NFVO) to + assist in correlating the resource changes performed during the LCM operation with the granted + resources in a specific Grant exchange, which is identified by the "grantId" available in the + "Individual VNF lifecycle management operation occurrence" and the "id" in the "Individual Grant". type: object required: - id @@ -2044,7 +2189,7 @@ definitions: id: description: > Identifier of the virtual link instance, identifying the applicable - "vnfVirtualLinkResourceInfo" entry in the "VnfInstance" data type. + "vnfVirtualLinkResourceInfo" or "extManagedVirtualLinkInfo" entry in the "VnfInstance" data type. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/IdentifierInVnf" vnfVirtualLinkDescId: description: > @@ -2058,19 +2203,17 @@ definitions: $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" changeType: description: > - Signals the type of change. Permitted values: - * ADDED - * REMOVED - * MODIFIED - * TEMPORARY - * LINK_PORT_ADDED - * LINK_PORT_REMOVED - For a temporary resource, an AffectedVirtualLink structure exists as - long as the temporary resource exists. - When signalling the addition (LINK_PORT_ADDED) or removal (LINK_PORT_REMOVED) of VNF link ports, the - "networkResource" attribute refers to the affected virtual link instance, not the link port instance. - The resource handles of the affected VNF link ports can be found by dereferencing the identifiers in the - "vnfLinkPortIds" attribute. + 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. + See note 1. type: string enum: - ADDED @@ -2081,42 +2224,26 @@ definitions: - LINK_PORT_REMOVED 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. - When signalling the addition (LINK_PORT_ADDED) or removal (LINK_PORT_REMOVED) of VNF link ports, the - "networkResource" attribute refers to the affected virtual link instance, not the link port instance. - The resource handles of the affected VNF link ports can be found by dereferencing the identifiers in - the "vnfLinkPortIds" attribute. + Reference to the VirtualNetwork resource. + Detailed information is (for new and modified resources) or has been (for removed resources) available from the VIM. + See note 1. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/ResourceHandle" vnfLinkPortIds: description: > - Identifiers of the link ports of the affected VL (reference to the vnfLinkPortInfo) related to the change. - Each identifier references a "VnfLinkPortInfo" structure. - Shall be set when changeType is equal to "LINK_PORT_ADDED" or "LINK_PORT_REMOVED", and the related - “VnfLinkPortInfo” structures are present (case "added") or have been present (case "removed") in the - “VnfVirtualLinkResourceInfo” or "ExtManagedVirtualLinkInfo" structures that are represented by the - "vnfVirtualLinkResourceInfo" or "extManagedVirtualLinkInfo" attribute in the "VnfInstance" structure. - When signalling the addition (LINK_PORT_ADDED) or removal (LINK_PORT_REMOVED) of VNF link ports, the - "networkResource" attribute refers to the affected virtual link instance, not the link port instance. - The resource handles of the affected VNF link ports can be found by dereferencing the identifiers in the - "vnfLinkPortIds" attribute. + Identifiers of the link ports of the affected VL related to the change. Each identifier references a "VnfLinkPortInfo" + structure. + + Shall be set when changeType is equal to "LINK_PORT_ADDED" or "LINK_PORT_REMOVED", and the related "VnfLinkPortInfo" + structures are present (case "added") or have been present (case "removed") in the "VnfVirtualLinkResourceInfo" or + "ExtManagedVirtualLinkInfo" structures that are represented by the "vnfVirtualLinkResource¬Info" or "extManagedVirtualLinkInfo" + attribute in the "VnfInstance" structure. See note 1. type: array items: $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/IdentifierInVnfd" resourceDefinitionId: description: > - The identifier of the "ResourceDefinition" in the granting exchange - related to the LCM operation occurrence. It shall be present when an - applicable GrantInfo for the granted resource exists. - When signalling the addition (LINK_PORT_ADDED) or removal (LINK_PORT_REMOVED) of VNF link ports, the - "networkResource" attribute refers to the affected virtual link instance, not the link port instance. - The resource handles of the affected VNF link ports can be found by dereferencing the identifiers in the - "vnfLinkPortIds" attribute. - The "resourceDefinitionId" attribute provides information to the API consumer (i.e. the NFVO) to assist - in correlating the resource changes performed during the LCM operation with the granted resources in a - specific Grant exchange, which is identified by the "grantId" available in the "Individual VNF lifecycle - management operation occurrence" and the "id" in the "Individual Grant". + The identifier of the "ResourceDefinition" in the granting exchange related to the LCM operation occurrence. + It shall be present when an applicable GrantInfo for the granted resource exists. See note 1 and note 2. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/IdentifierLocal" zoneId: description: > @@ -2128,13 +2255,19 @@ definitions: 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. + "metadata" attribute of the applicable "vnfVirtualLinkResourceInfo” + structure if such structure is referenced by the "id" attribute and it has metadata. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/KeyValuePairs" AffectedVirtualStorage: description: > - This type provides information about added, deleted, modified and - temporary virtual storage resources. + This type provides information about added, deleted, modified and temporary virtual storage resources. + It shall comply with the provisions in table 5.5.3.15-1. + + NOTE: The "resourceDefinitionId" attribute provides information to the API consumer (i.e. the NFVO) to + assist in correlating the resource changes performed during the LCM operation with the granted + resources in a specific Grant exchange, which is identified by the "grantId" available in the + "Individual VNF lifecycle management operation occurrence" and the "id" in the "Individual Grant". type: object required: - id @@ -2180,15 +2313,8 @@ definitions: $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/ResourceHandle" resourceDefinitionId: description: > - The identifier of the "ResourceDefinition" in the granting exchange - related to the LCM operation occurrence. It shall be present when an - applicable GrantInfo for the granted resource exists. - The "resourceDefinitionId" attribute provides information to the API - consumer (i.e. the NFVO) to assist in correlating the resource changes - performed during the LCM operation with the granted resources in a - specific Grant exchange, which is identified by the "grantId" available - in the "Individual VNF lifecycle management operation occurrence" and - the "id" in the "Individual Grant". + The identifier of the "ResourceDefinition" in the granting exchange related to the LCM operation occurrence. + It shall be present when an applicable GrantInfo for the granted resource exists. See note. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/IdentifierLocal" zoneId: description: > diff --git a/src/SOL003/VNFLifecycleManagementNotification/VNFLifecycleManagementNotification.yaml b/src/SOL003/VNFLifecycleManagementNotification/VNFLifecycleManagementNotification.yaml index 491065a100f788d458dfc3a4cdb4ff5fb9ed7fe1..e016bb91a54f60627798563447af88aee7649456 100644 --- a/src/SOL003/VNFLifecycleManagementNotification/VNFLifecycleManagementNotification.yaml +++ b/src/SOL003/VNFLifecycleManagementNotification/VNFLifecycleManagementNotification.yaml @@ -10,36 +10,34 @@ info: discrepancies the published ETSI Group Specification takes precedence. Please report bugs to https://forge.etsi.org/rep/nfv/SOL002-SOL003/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 003 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.03.01_60/gs_NFV-SOL003v030301p.pdf + description: ETSI GS NFV-SOL 003 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.05.01_60/gs_NFV-SOL003v030501p.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: ############################################################################### # Notification endpoint VnfLcmOperationOccurrenceNotification # ############################################################################### - /URI-is-provided-by-the-client-when-creating-the-subscription-VnfLcmOperationOccurrenceNotification: + /URI_is_provided_by_the_client_when_creating_the_subscription-VnfLcmOperationOccurrenceNotification: parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version post: description: | - Notify. - 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 5.4.20.3.1-1 and 5.4.20.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 5.4.20.3.1. requestBody: $ref: '#/components/requestBodies/VnfLcmOperationOccurrenceNotification' responses: @@ -62,10 +60,8 @@ paths: get: description: | - The GET method allows the API producer to test the notification endpoint that is provided by the - API consumer, e.g. during subscription. - This method shall follow the provisions specified in the tables 5.4.20.3.2-1 and 5.4.20.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.20.3.2. responses: 204: $ref: '#/components/responses/VnfLcmOperationOccurrenceNotification.Get.204' @@ -87,17 +83,14 @@ paths: ############################################################################### # Notification endpoint VnfIdentifierCreationNotification # ############################################################################### - /URI-is-provided-by-the-client-when-creating-the-subscription-VnfIdentifierCreationNotification: + /URI_is_provided_by_the_client_when_creating_the_subscription-VnfIdentifierCreationNotification: parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version post: description: | - Notify. - 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 5.4.20.3.1-1 and 5.4.20.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 5.4.20.3.1. requestBody: $ref: '#/components/requestBodies/VnfIdentifierCreationNotification' responses: @@ -120,10 +113,8 @@ paths: get: description: | - The GET method allows the server 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 5.4.20.3.2-1 and 5.4.20.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.20.3.2. responses: 204: $ref: '#/components/responses/VnfIdentifierCreationNotification.Get.204' @@ -145,17 +136,14 @@ paths: ############################################################################### # Notification endpoint VnfIdentifierDeletionNotification # ############################################################################### - /URI-is-provided-by-the-client-when-creating-the-subscription-VnfIdentifierDeletionNotification: + /URI_is_provided_by_the_client_when_creating_the_subscription-VnfIdentifierDeletionNotification: parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version post: description: | - Notify. - 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 5.4.20.3.1-1 and 5.4.20.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 5.4.20.3.1. requestBody: $ref: '#/components/requestBodies/VnfIdentifierDeletionNotification' responses: @@ -178,10 +166,8 @@ paths: get: description: | - The GET method allows the server 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 5.4.20.3.2-1 and 5.4.20.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.20.3.2. responses: 204: $ref: '#/components/responses/VnfIdentifierDeletionNotification.Get.204' diff --git a/src/SOL003/VNFLifecycleOperationGranting/VNFLifecycleOperationGranting.yaml b/src/SOL003/VNFLifecycleOperationGranting/VNFLifecycleOperationGranting.yaml index f40cf9455279baa6c27b3da151c76446937f4ddd..b8905f1af136621c9b55fdaacb4ba9d3a2a0a24a 100644 --- a/src/SOL003/VNFLifecycleOperationGranting/VNFLifecycleOperationGranting.yaml +++ b/src/SOL003/VNFLifecycleOperationGranting/VNFLifecycleOperationGranting.yaml @@ -10,16 +10,17 @@ info: discrepancies the published ETSI Group Specification takes precedence. Please report bugs to https://forge.etsi.org/rep/nfv/SOL002-SOL003/issues + contact: name: NFV-SOL WG license: name: ETSI Forge copyright notice url: https://forge.etsi.org/etsi-forge-copyright-notice.txt - version: "1.4.0-impl:etsi.org:ETSI_NFV_OpenAPI:1" + version: "1.5.0-impl:etsi.org:ETSI_NFV_OpenAPI:1" externalDocs: - description: ETSI GS NFV-SOL 003 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.03.01_60/gs_NFV-SOL003v030301p.pdf + description: ETSI GS NFV-SOL 003 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.05.01_60/gs_NFV-SOL003v030501p.pdf servers: - url: http://127.0.0.1/grant/v1 @@ -39,15 +40,7 @@ paths: #SOL003 location: 9.4.2 post: description: | - Grant Lifecycle Operation. - The POST method requests a grant for a particular VNF lifecycle operation. - This method shall follow the provisions specified in the tables 9.4.2.3.1-1 and 9.4.2.3.1-2 - for URI query parameters, request and response data structures, and response codes. - As the result of successfully processing this request, a new "Individual grant" resource - shall be created. In the synchronous case which is indicated by responding with "201 Created", - that resource shall be created before the 200 OK response is returned. In the asynchronous - case which is indicated by responding with "202 Accepted", this resource may be created - after the response is returned. + The POST method requests a grant for a particular VNF lifecycle operation. See clause 9.4.2.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization @@ -64,11 +57,7 @@ paths: 401: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/401" 403: - #description: | - # 403 FORBIDDEN - # - # Shall be returned upon the following error: The grant has been rejected. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/403" + $ref: '#/components/responses/Grants.Post.403' 404: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/404" 405: @@ -93,10 +82,7 @@ paths: - $ref: '#/components/parameters/GrantId' get: description: | - Grant Lifecycle Operation. - The GET method reads a grant. - This method shall follow the provisions specified in the tables 9.4.3.3.2-1 and 9.4.3.3.2-2 - for URI query parameters, request and response data structures, and response codes. + The GET method reads a grant. See clause 9.4.3.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization @@ -111,11 +97,7 @@ paths: 401: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/401" 403: - #description: | - # 403 FORBIDDEN - # - # Shall be returned upon the following error: The grant has been rejected. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/403" + $ref: '#/components/responses/IndividualGrant.Get.403' 404: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/404" 405: @@ -227,6 +209,50 @@ components: schema: type: string + Grants.Post.403: + description: | + 403 FORBIDDEN + + Shall be returned upon the following error: The grant + has been rejected. + A ProblemDetails structure shall be included in the + response to provide more details about the rejection + in the "details" attribute. + headers: + Location: + description: | + The resource URI of the created subscription resource. + style: simple + explode: false + schema: + type: string + format: url + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + IndividualGrant.Get.200: description: | 200 OK @@ -273,4 +299,40 @@ components: style: simple explode: false schema: - type: string \ No newline at end of file + type: string + + IndividualGrant.Get.403: + description: | + 403 FORBIDDEN + + Shall be returned upon the following error: The grant + has been rejected. + A ProblemDetails structure shall be included in the + response to provide more details about the rejection in + the "details" attribute. + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" \ No newline at end of file diff --git a/src/SOL003/VNFLifecycleOperationGranting/definitions/SOL003VNFLifecycleOperationGranting_def.yaml b/src/SOL003/VNFLifecycleOperationGranting/definitions/SOL003VNFLifecycleOperationGranting_def.yaml index 6eeab6a6d3a69fbf86a57464def7a246fccddc33..18150a39e254a54e0c62d337c42fef24de4da8f6 100644 --- a/src/SOL003/VNFLifecycleOperationGranting/definitions/SOL003VNFLifecycleOperationGranting_def.yaml +++ b/src/SOL003/VNFLifecycleOperationGranting/definitions/SOL003VNFLifecycleOperationGranting_def.yaml @@ -4,7 +4,26 @@ definitions: GrantRequest: description: > - This type represents a grant request. + This type represents a grant request. It shall comply with the provisions defined in table 9.5.2.2-1. + + NOTE 1: The VNF LCM operations CreateVnfIdentifier, DeleteVnfIdentifier, QueryVnf and ModifyVnfInformation + can be executed by the VNFM without requesting granting. + NOTE 2: If the granting request is for InstantiateVNF, either instantiationLevel or addResources shall be present. + NOTE 3: The NFVO will assume that the VNFM will be responsible to both allocate and release the temporary resource + during the runtime of the LCM operation. This means, the resource can be allocated and consumed after the + "start" notification for the LCM operation is sent by the VNFM, and the resource will be released before the + "result" notification of the VNF LCM operation is sent by the VNFM. + NOTE 4: The affinity/anti-affinity rules defined in the VNFD and the placement constraints in the GrantVnfLifecycleOperation + as defined in this clause should be conflict-free. In case of conflicts, the placement constraints in the + GrantVnfLifecycleOperation shall take precedence. + NOTE 5: Passing constraints allows the VNFM or the lifecycle management scripts to influence resource placement decisions + by the NFVO to ensure VNF properties such as performance or fault tolerance. + NOTE 6: If fallbackBestEffort is present in placement constraints and set to "true", the NFVO shall process the Affinity/AntiAffinity + constraint in a best effort manner, in which case, if specified resources cannot be allocated based on specified placement + constraint, the NFVO looks for an alternate best effort placement for the specified resources to be granted. + In the best effort anti-affinity case, the resources are expected to be spread optimally over all available instances of scope + (e.g. zones), and in the best effort affinity case, they are expected to be distributed optimally over fewer possible instances + of scope. type: object required: - vnfInstanceId @@ -50,10 +69,7 @@ definitions: $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" operation: description: > - The lifecycle management operation for which granting is requested. - The VNF LCM operations CreateVnfIdentifier, DeleteVnfIdentifier, - QueryVnf and ModifyVnfInformation can be executed by the VNFM - without requesting granting. + The lifecycle management operation for which granting is requested. See note 1. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/GrantedLcmOperationType" isAutomaticInvocation: description: > @@ -65,32 +81,22 @@ definitions: type: boolean instantiationLevelId: description: > - If operation=INSTANTIATE, the identifier of the instantiation level - may be provided as an alternative way to define the resources to be - added. This attribute shall only be used if operation=INSTANTIATE. + If operation=INSTANTIATE, the identifier of the instantiation level may be provided as an + alternative way to define the resources to be added. This attribute shall only be used if + operation=INSTANTIATE. See note 2. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" addResources: description: > - List of resource definitions in the VNFD for resources to be added - by the LCM operation which is related to this grant request, with - one entry per resource. - If the granting request is for InstantiateVNF, either - instantiationLevel or addResources shall be present. + List of resource definitions in the VNFD for resources to be added by the LCM operation + which is related to this grant request, with one entry per resource. See note 2. type: array items: $ref: "#/definitions/ResourceDefinition" tempResources: description: > - List of resource definitions in the VNFD for resources to be - temporarily instantiated during the runtime of the LCM operation - which is related to this grant request, with one entry per - resource. - The NFVO will assume that the VNFM will be responsible to both - allocate and release the temporary resource during the runtime of - the LCM operation. This means, the resource can be allocated and - consumed after the "start" notification for the LCM operation is - sent by the VNFM, and the resource will be released before the - "result" notification of the VNF LCM operation is sent by the VNFM. + List of resource definitions in the VNFD for resources to be temporarily instantiated during + the runtime of the LCM operation which is related to this grant request, with one entry per + resource. See note 3. type: array items: $ref: "#/definitions/ResourceDefinition" @@ -112,28 +118,10 @@ definitions: $ref: "#/definitions/ResourceDefinition" placementConstraints: description: > - Placement constraints that the VNFM may send to the NFVO in order to - influence the resource placement decision. If sent, the NFVO shall - take the constraints into consideration when making resource - placement decisions, and shall reject the grant if they cannot be - honoured. - The affinity/anti-affinity rules defined in the VNFD , and the - placement constraints in the GrantVnfLifecycleOperation as defined - in this clause should be conflict-free. In case of conflicts, the - placement constraints in the GrantVnfLifecycleOperation shall take - precedence. - Passing constraints allows the VNFM or the lifecycle management - scripts to influence resource placement decisions by the NFVO to - ensure VNF properties such as performance or fault tolerance. - If fallbackBestEffort is present in placement constraints and set - to “true”, the NFVO shall process the Affinity/AntiAffinity constraint - in a best effort manner, in which case, if specified resources cannot be - allocated based on specified placement constraint, the NFVO looks for an - alternate best effort placement for the specified resources to be granted. - In the best effort anti-affinity case, the resources are expected to be - spread optimally over all available instances of scope (e.g. zones), - and in the best effort affinity case, they are expected to be distributed - optimally over fewer possible instances of scope. + Placement constraints that the VNFM may send to the NFVO in order to influence the resource + placement decision. If sent, the NFVO shall take the constraints into consideration when making + resource placement decisions and shall reject the grant if they cannot be honoured. See notes 4, + 5 and 6. type: array items: $ref: "#/definitions/PlacementConstraint" @@ -175,6 +163,48 @@ definitions: Grant: description: > This type represents a grant. + + NOTE 1: This interface allows to signal the use of multiple VIMs per VNF. + However, due to the partial support of this feature in the present + release, it is recommended in the present document that the number + of entries in the "vims" attribute in the Grant is not greater than 1. + NOTE 2: Void. + NOTE 3: The Grant response allows the NFVO to pass to the VNFM VIM assets + related to the VNF package that is identified by the vnfdId attribute + in the corresponding Grant request. The NFVO may send in each Grant + response the full set of VIM assets related to the VNF package defined + by the vnfdId in the related Grant request, but shall send this information + if the vnfdId in the related Grant request differs from the vnfdId passed + in the previous Grant request, or if the Grant response is related to an + InstantiateVnf operation. The set of VIM assets shall not change between + subsequent Grant responses if the vnfdId has not changed. During each LCM + operation occurrence, the VIM assets that relate to the VNF package identified + by the current value of the vnfdId attribute in the "VnfInstance" structure + shall be used by the VNFM for newly created resources. If the VNF package + identifier of the VNF instance has been updated, VIM assets that relate to + the previously-used VNF package(s), and that were communicated in previous + Grant responses, apply to existing resources. + NOTE 4: 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 5: For any VNF lifecycle management operation request that allows to pass "extVirtualLinks" + and/or "extManagedVirtualLinks" parameters, such as InstantiateVnf, ChangeVnfFlavour, + ChangeExtVnfConnectivity or ChangeCurrentVnfPackage, the NFVO may provide the "extVirtualLinks" + and/or "extManagedVirtualLinks" attributes in the Grant to override the values passed + in these parameters previously in the associated VNF lifecycle management request, if + the lifecycle management request has originated from the NFVO itself. The NFVO shall + not provide the "extVirtualLinks" and/or "extManagedVirtualLinks" attributes in the + Grant otherwise. + NOTE 6: The NFVO shall set the value of the attribute by copying the value from the associated + GrantRequest. + NOTE 7: In case of granting an InstantiateVnf request that has originated from the NFVO and that + did not contain the "extVirtualLinks" attribute, this attribute shall be set by the NFVO. + Further in case of granting an InstantiateVnf request that has originated from the NFVO + and that did not contain the "extManagedVirtualLinks" attribute, this attribute shall be + set by the NFVO if there is the need to provide information about externally-managed virtual + links. type: object required: - id @@ -188,37 +218,27 @@ definitions: $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" vnfInstanceId: description: > - Identifier of the related VNF instance. - The NFVO shall set the value of the attribute by copying the value - from the associated GrantRequest. + Identifier of the related VNF instance. See note 6. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" vnfLcmOpOccId: description: > - Identifier of the related VNF lifecycle management operation - occurrence. - The NFVO shall set the value of the attribute by copying the value - from the associated GrantRequest. + Identifier of the related VNF lifecycle management operation occurrence. + See note 6. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" vimConnectionInfo: description: > - Provides information regarding VIM connections that are approved to - be used by the VNFM to allocate resources, and provides parameters - of these VIM connections. - The VNFM shall update the " vimConnectionInfo" attribute of the - "VnfInstance" structure by adding unknown entries received in this - attribute. - This attribute is not intended for the modification of vimConnectionInfo - entries passed earlier; for that, the VnfInfoModificationRequest - structure shall be used. - This attribute shall only be supported when VNF-related Resource - Management in direct mode is applicable. In direct mode, this - parameter shall be absent if the VIM information was configured to - the VNFM in another way, present otherwise. - This interface allows to signal the use of multiple VIMs per VNF. - However, due to the partial support of this feature in the present - release, it is recommended in the present document that the number - of entries in the "vims" attribute in the Grant is not greater than - 1. + Provides information regarding VIM connections that are approved to be used + by the VNFM to allocate resources and provides parameters of these VIM connections. + + The VNFM shall update the "vimConnectionInfo" attribute of the "VnfInstance" structure + by adding unknown entries received in this attribute. + + This attribute is not intended for the modification of VimConnectionInfo entries passed + earlier; for that, the VnfInfoModificationRequest structure shall be used. + + This attribute shall only be supported when VNF-related Resource Management in direct mode + is applicable. In direct mode, this parameter shall be absent if the VIM information was + configured to the VNFM in another way, present otherwise. See note 1. type: object additionalProperties: $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/VimConnectionInfo" @@ -243,7 +263,9 @@ definitions: addResources: description: > List of resources that are approved to be added, with one entry per - resource. Shall be set when resources are approved to be added. + resource. Shall be set when resources are approved to be added and + shall contain the same set of resources requested to be added in the + related GrantRequest. type: array items: $ref: "#/definitions/GrantInfo" @@ -252,45 +274,33 @@ definitions: List of resources that are approved to be temporarily instantiated during the runtime of the lifecycle operation, with one entry per resource. Shall be set when resources are approved to be temporarily - instantiated. + instantiated and shall contain the same set of resources requested to + be temporarily instantiated in the related GrantRequest. type: array items: $ref: "#/definitions/GrantInfo" removeResources: description: > List of resources that are approved to be removed, with one entry - per resource. Shall be set when resources are approved to be removed. + per resource. Shall be set when resources are approved to be removed + and shall contain the same set of resources requested to be removed + in the related GrantRequest. type: array items: $ref: "#/definitions/GrantInfo" updateResources: description: > List of resources that are approved to be modified, with one entry - per resource. Shall be set when resources are approved to be updated. + per resource. Shall be set when resources are approved to be updated + and shall contain the same set of resources requested to be updated + in the related GrantRequest. type: array items: $ref: "#/definitions/GrantInfo" vimAssets: description: > - Information about assets for the VNF that are managed by the NFVO - in the VIM, such as software images and virtualised compute resource - flavours. - The Grant response allows the NFVO to pass to the VNFM VIM assets - related to the VNF package that is identified by the vnfdId attribute - in the corresponding Grant request. The NFVO may send in each Grant - response the full set of VIM assets related to the VNF package defined - by the vnfdId in the related Grant request, but shall send this information - if the vnfdId in the related Grant request differs from the vnfdId passed - in the previous Grant request, or if the Grant response is related to an - InstantiateVnf operation. - The set of VIM assets shall not change between subsequent Grant responses - if the vnfdId has not changed. During each LCM operation occurrence, - the VIM assets that relate to the VNF package identified by the current value - of the vnfdId attribute in the “VnfInstance” structure shall be used by the - VNFM for newly created resources. If the VNF package identifier of the - VNF instance has been updated, VIM assets that relate to the previously-used - VNF package(s), and that were communicated in previous Grant responses, - apply to existing resources. + Information about assets for the VNF that are managed by the NFVO in the VIM, + such as software images and virtualised compute resource flavours. See note 3. type: object properties: computeResourceFlavours: @@ -316,64 +326,15 @@ definitions: $ref: "#/definitions/VimSnapshotResource" extVirtualLinks: description: > - Information about external VLs to connect the VNF to. - External and/or externally-managed internal VLs can be passed in VNF - lifecycle management operation requests such as InstantiateVnf, ChangeVnfFlavor, - ChangeExtVnfConnectivity or ChangeCurrentVnfPackage and/or in the grant response. - The NFVO may choose to override in the grant response external and/or - externally-managed VL instances that have been passed previously in the - associated VNF lifecycle management request, if the lifecycle management request - has originated from the NFVO itself. - In case of granting an InstantiateVnf request that has originated from the NFVO - and that did not contain the "extVirtualLinks" attribute, this attribute shall be - set by the NFVO. Further in case of granting an InstantiateVnf request that has - originated from the NFVO and that did not contain the "extManagedVirtualLinks" - attribute, this attribute shall be set by the NFVO if there is the need to provide - information about externally-managed virtual links. - - If this attribute is present , it need not contain - those entries that are unchanged compared to the entries that were passed - in the LCM operation which is related to this granting exchange. - External and/or externally-managed internal VLs can be passed in VNF - lifecycle management operation requests such as InstantiateVnf, ChangeVnfFlavor, - ChangeExtVnfConnectivity or ChangeCurrentVnfPackage and/or in the grant response. - The NFVO may choose to override in the grant response external and/or - externally-managed VL instances that have been passed previously in the - associated VNF lifecycle management request, if the lifecycle management request - has originated from the NFVO itself. - In case of granting an InstantiateVnf request that has originated from the NFVO - and that did not contain the "extVirtualLinks" attribute, this attribute shall be - set by the NFVO. Further in case of granting an InstantiateVnf request that has - originated from the NFVO and that did not contain the "extManagedVirtualLinks" - attribute, this attribute shall be set by the NFVO if there is the need to provide - information about externally-managed virtual links. + Information about external VLs to connect the VNF to. See notes 5 and 7. If this attribute + is present according to note 5 or note 7, it need not contain those entries that are unchanged + compared to the entries that were passed in the LCM operation which is related to this granting exchange. type: array items: $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/ExtVirtualLinkData" extManagedVirtualLinks: description: > - Information about internal VLs that are managed by other entities - than the VNFM. - The indication of externally-managed internal VLs is needed in case - networks have been pre-configured for use with certain VNFs, for - instance to ensure that these networks have certain properties such - as security or acceleration features, or to address particular - network topologies. The present document assumes that - externally-managed internal VLs are managed by the NFVO and created - towards the VIM. - External and/or externally-managed internal VLs can be passed in VNF - lifecycle management operation requests such as InstantiateVnf, ChangeVnfFlavor, - ChangeExtVnfConnectivity or ChangeCurrentVnfPackage and/or in the grant response. - The NFVO may choose to override in the grant response external and/or - externally-managed VL instances that have been passed previously in the - associated VNF lifecycle management request, if the lifecycle management request - has originated from the NFVO itself. - In case of granting an InstantiateVnf request that has originated from the NFVO - and that did not contain the "extVirtualLinks" attribute, this attribute shall be - set by the NFVO. Further in case of granting an InstantiateVnf request that has - originated from the NFVO and that did not contain the "extManagedVirtualLinks" - attribute, this attribute shall be set by the NFVO if there is the need to provide - information about externally-managed virtual links. + Information about internal VLs that are managed by other entities than the VNFM. See notes 4, 5 and 7. type: array items: $ref: "../../VNFLifecycleManagement/definitions/SOL003VNFLifecycleManagement_def.yaml#/definitions/ExtManagedVirtualLinkData" @@ -406,8 +367,17 @@ definitions: ResourceDefinition: description: > - This type provides information of an existing or proposed resource used - by the VNF. + This type provides information of an existing or proposed resource used by the VNF. + It shall comply with the provisions defined in table 9.5.3.2-1. + + 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: In the context of an operation that changes the current VNF package, the following applies: If this + ResourceDefinition is related to a resource to be created or modified, the "vnfdId" attribute shall + contain the identifier of the destination VNFD. If this ResourceDefinition is related to a resource + to be deleted, the "vnfdId" attribute shall contain the identifier of the source VNFD. If this + ResourceDefinition is related to a temporary resource, the "vnfdId" attribute shall contain the + identifier of either the source VNFD or the destination VNFD. type: object required: - id @@ -436,13 +406,13 @@ definitions: description: > Reference to the related VDU in the VNFD applicable to this resource. - Shall only be present if a VDU is applicable to this resource. + Shall only be present if a VDU is applicable to this resource, + i.e. if "type" has the value "COMPUTE". $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/IdentifierInVnfd" vnfdId: description: > Identifier of the VNFD to which resourceTemplateId and vduId refer. Shall be present - if at least one of resourceTemplateId and vduId is present and the operation to - be granted changes the current VNF Package. May be absent otherwise. + if the operation to be granted changes the current VNF Package. May be absent otherwise. See note 2. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" resourceTemplateId: description: > @@ -452,6 +422,14 @@ definitions: - if type="LINKPORT" : VnfExtCpd - if type="STORAGE" : VirtualStorageDesc $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/IdentifierInVnfd" + secondaryResourceTemplateId: + description: > + Reference to a secondary resource template (VnfExtCpd) in the VNFD. + Shall be present if type="LINKPORT" and the linkport is shared by two external CP instances, + one exposing a VNFC CP instance (based on a VnfExtCpd referenced by "resourceTemplateId") and + another one exposing a VIP CP instance (based on a VnfExtCpd referenced by this attribute). + Shall be absent otherwise. See note 1. + $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/IdentifierInVnfd" resource: description: > Resource information for an existing resource. Shall be present for @@ -809,7 +787,20 @@ definitions: SnapshotResourceDefinition: description: > - This type represents resource definition information related to a snapshot resource. + This type represents resource definition information related to a snapshot resource. + It shall comply with the provisions defined in table 9.5.3.11-1. + + NOTE 1: If present, the value of the "vduId" (for a related VDU) in the "VnfcResourceInfo" + referred by the "vnfcInfoId" of the "VnfcSnapshotInfo" shall match the value of the + "vduId" in the resource definition that is signalled in the granting request. + NOTE 2: For snapshot resource definitions extracted from a VNF snapshot package, only the + "vnfcSnapshotId" and "storageSnapshotId" (in case of a storage type of resource) + are applicable. If the snapshot resource definition is generated as part of a VNF + snapshot created by the VNFM (that is, not extracted from a VNF snapshot package), + the "snapshotResource" is applicable. This is a similar specification as the one + defined with the "vduId", "resourceTemplateId" and "resource" attributes provided in + the ResourceDefinition, but in this case applicable to resources that are defined from + VNF snapshots instead of VNFD. type: object required: - vnfSnapshotId @@ -822,53 +813,25 @@ definitions: $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" vnfcSnapshotId: description: > - Reference to the information about a specific VNFC snapshot (refer to "VnfcSnapshotInfo") - of the VNF snapshot. The identifier is unique within the scope of a VNF snapshot, identified - by the "vnfSnapshotId" attribute. Shall only be present if the operation to be granted - concerns to reverting the VNF to a VNF snapshot, and the resource is planned to be added - based on the VNFC snapshot, and the type of resource is "COMPUTE" or "STORAGE". - - If present, the value of the "vduId" (for a related VDU) in the "VnfcResourceInfo" referred - by the "vnfcInfoId" of the "VnfcSnapshotInfo" shall match the value of the "vduId" in the - resource definition that is signalled in the granting request. - - For snapshot resource definitions extracted from a VNF snapshot package, only the - "vnfcSnapshotId" and "storageSnapshotId" (in case of a storage type of resource) are applicable. - If the snapshot resource definition is generated as part of a VNF snapshot created by the VNFM - (that is, not extracted from a VNF snapshot package), the "snapshotResource" is applicable. - This is a similar specification as the one defined with the "vduId", "resourceTemplateId" and - "resource" attributes provided in the ResourceDefinition, but in this case applicable to resources - that are defined from VNF snapshots instead of VNFD. + Reference to the information about a specific VNFC snapshot (refer to "VnfcSnapshotInfo") of + the VNF snapshot. The identifier is unique within the scope of a VNF snapshot, identified by + the "vnfSnapshotId" attribute. Shall only be present if the operation to be granted concerns + to reverting the VNF to a VNF snapshot, and the resource is planned to be added based on the + VNFC snapshot, and the type of resource is "COMPUTE" or "STORAGE". See notes 1 and 2. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/IdentifierLocal" storageSnapshotId: description: > - Reference to a snapshotted storage resource associated to the VNFC snapshot. Shall only be - present if the operation to be granted concerns to reverting the VNF to a VNF snapshot, - and the storage resource is planned to be added based on the VNFC snapshot, and the type - of resource is "STORAGE". - - For snapshot resource definitions extracted from a VNF snapshot package, only the - "vnfcSnapshotId" and "storageSnapshotId" (in case of a storage type of resource) are applicable. - If the snapshot resource definition is generated as part of a VNF snapshot created by the VNFM - (that is, not extracted from a VNF snapshot package), the "snapshotResource" is applicable. - This is a similar specification as the one defined with the "vduId", "resourceTemplateId" and - "resource" attributes provided in the ResourceDefinition, but in this case applicable to resources - that are defined from VNF snapshots instead of VNFD. + Reference to a snapshotted storage resource associated to the VNFC snapshot. Shall only be present + if the operation to be granted concerns to reverting the VNF to a VNF snapshot, and the storage + resource is planned to be added based on the VNFC snapshot, and the type of resource is "STORAGE". + See note 2. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/IdentifierInVnf" snapshotResource: description: > - Resource information for an existing snapshot resource. Shall only be present if the - operation to be granted concerns to reverting the VNF to a VNF snapshot and the resource is - planned to be added based on an existing VNF snapshot that has been created by the VNFM. - Shall be absent otherwise. - - For snapshot resource definitions extracted from a VNF snapshot package, only the - "vnfcSnapshotId" and "storageSnapshotId" (in case of a storage type of resource) are applicable. - If the snapshot resource definition is generated as part of a VNF snapshot created by the VNFM - (that is, not extracted from a VNF snapshot package), the "snapshotResource" is applicable. - This is a similar specification as the one defined with the "vduId", "resourceTemplateId" and - "resource" attributes provided in the ResourceDefinition, but in this case applicable to resources - that are defined from VNF snapshots instead of VNFD. + Resource information for an existing snapshot resource. Shall only be present if the operation to + be granted concerns to reverting the VNF to a VNF snapshot and the resource is planned to be added + based on an existing VNF snapshot that has been created by the VNFM. Shall be absent otherwise. + See note 2. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/ResourceHandle" VimSnapshotResource: @@ -898,7 +861,8 @@ definitions: $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" vnfSnapshotId: description: > - Identifier of the VNF snapshot related to the snapshot resource. + Identifier of the VNF snapshot (referring to the "id" attribute in the "VnfSnapshot" data structure) + related to this VIM snapshot resource. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" vnfcSnapshotId: description: > diff --git a/src/SOL003/VNFPackageManagement/VNFPackageManagement.yaml b/src/SOL003/VNFPackageManagement/VNFPackageManagement.yaml index a2434399db40c44a03e964d8d73170843beb113c..c85a97d5e9d5ac32c1d1138125e99266c95cb224 100644 --- a/src/SOL003/VNFPackageManagement/VNFPackageManagement.yaml +++ b/src/SOL003/VNFPackageManagement/VNFPackageManagement.yaml @@ -10,16 +10,17 @@ info: discrepancies the published ETSI Group Specification takes precedence. Please report bugs to https://forge.etsi.org/rep/nfv/SOL002-SOL003/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 003 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.03.01_60/gs_NFV-SOL003v030301p.pdf + description: ETSI GS NFV-SOL 003 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.05.01_60/gs_NFV-SOL003v030501p.pdf servers: - url: http://127.0.0.1/vnfpkgm/v2 @@ -39,10 +40,7 @@ paths: #SOL003 location: 10.4.2 get: description: | - Query VNF Package Info. - The GET method queries the information of the VNF packages matching the filter. - This method shall follow the provisions specified in the tables 10.4.2.3.2-1 and 10.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 10.4.2.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization @@ -77,6 +75,9 @@ paths: 504: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/504" + /vnf_packages: + $ref: '#/paths/~1onboarded_vnf_packages' + ############################################################################### # Individual VNF package # ############################################################################### @@ -85,11 +86,7 @@ paths: - $ref: '#/components/parameters/VnfPkgId' get: description: | - Query VNF Package Info. - The GET method reads the information of an individual VNF package. - This method shall follow the provisions specified in the tables - 10.4.3.3.2-1 and 10.4.3.3.2-2 for URI query parameters, - request and response data structures, and response codes. + The GET method reads the information of an individual VNF package. Clause 10.4.3.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization @@ -122,11 +119,7 @@ paths: - $ref: '#/components/parameters/VnfdId' get: description: | - Query VNF Package Info. - The GET method reads the information of an individual VNF package. - This method shall follow the provisions specified in the tables - 10.4.3.3.2-1 and 10.4.3.3.2-2 for URI query parameters, - request and response data structures, and response codes. + The GET method reads the information of an individual VNF package. Clause 10.4.3.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization @@ -163,94 +156,7 @@ paths: - $ref: '#/components/parameters/VnfPkgId' get: description: | - Query VNF Package Info - - The GET method reads the content of the VNFD within a VNF package. - The VNFD is implemented as a collection of one or more files. - A ZIP archive embedding these files shall be returned when reading this resource. - 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 needed to navigate the ZIP - archive 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) - Three examples are provided below. - - NOTE: These examples do not show the security related files. - - EXAMPLE 1: Assuming a request is sent for the following VNF package - (as described in clause A.1 in ETSI GS NFV-SOL 004): - !------TOSCA-Metadata - !----- TOSCA.meta (metadata for navigating the ZIP file) - !------Definitions - !----- MRF.yaml (main VNFD file) - !----- OtherTemplates (e.g. type definitions, referenced by the main VNFD file) - !------Files - !----- ChangeLog.txt - !----- image(s) - !----- other artifacts - !------Tests - !----- file(s) - !------Licenses - !----- file(s) - !------Scripts - !----- install.sh - !----- MRF.mf - - The NFVO will return a ZIP file of the following format: - !------TOSCA-Metadata - !----- TOSCA.meta - !------Definitions - !----- MRF.yaml - !----- OtherTemplates - - EXAMPLE 2: Assuming a request is sent for the following VNF package - (a VNF package without a TOSCA-Metadata directory, as - described in clause A.2 in ETSI GS NFV-SOL 004): - !------MRF.yaml (main VNFD file) - !------MRF.mf - !------ChangeLog.txt - !------Tests - !----- file(s) - !------Licenses - !----- file(s) - !------Artifacts - !----- install.sh - !----- start.yang - - The NFVO will return a ZIP file of the following format: - !------MRF.yaml - - EXAMPLE 3: Assuming a request is sent for the following VNF package - (a VNF package with the YANG VNFD without a TOSCA-Metadata directory, - as described in clause A.3 in ETSI GS NFV SOL 004): - !----CompanyVNFD.yaml - !----CompanyVNFD.xml - !----CompanyVNFD.mf - !----ChangeLog.txt - !-----Files - !-----Instance Data Files - !---- start.xml - !-----Licenses - !-----Scripts - !----- install.sh - - The NFVO will return a ZIP file of the following format: - !----CompanyVNFD.yaml - !----CompanyVNFD.xml (indicated in the yang_definitions metadata in CompanyVNFD.yaml) - - This method shall follow the provisions specified in the tables 10.4.4.3.2-1 - and 10.4.4.3.2-2 for URI query parameters, request and response data structures, - nd response codes. + The GET method reads the content of the VNFD within a VNF package. See clause 10.4.4.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization @@ -270,14 +176,7 @@ paths: 405: $ref: "../../responses/SOL002SOL003_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 that "onboardingState" of the - # VNF package has a value different from "ONBOARDED". - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409" + $ref: '#/components/responses/VnfdInIndividualVnfPackage.Get.409' 416: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/416" 500: @@ -292,94 +191,7 @@ paths: - $ref: '#/components/parameters/VnfdId' get: description: | - Query VNF Package Info - - The GET method reads the content of the VNFD within a VNF package. - The VNFD is implemented as a collection of one or more files. - A ZIP archive embedding these files shall be returned when reading this resource. - 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 needed to navigate the ZIP - archive 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) - Three examples are provided below. - - NOTE: These examples do not show the security related files. - - EXAMPLE 1: Assuming a request is sent for the following VNF package - (as described in clause A.1 in ETSI GS NFV-SOL 004): - !------TOSCA-Metadata - !----- TOSCA.meta (metadata for navigating the ZIP file) - !------Definitions - !----- MRF.yaml (main VNFD file) - !----- OtherTemplates (e.g. type definitions, referenced by the main VNFD file) - !------Files - !----- ChangeLog.txt - !----- image(s) - !----- other artifacts - !------Tests - !----- file(s) - !------Licenses - !----- file(s) - !------Scripts - !----- install.sh - !----- MRF.mf - - The NFVO will return a ZIP file of the following format: - !------TOSCA-Metadata - !----- TOSCA.meta - !------Definitions - !----- MRF.yaml - !----- OtherTemplates - - EXAMPLE 2: Assuming a request is sent for the following VNF package - (a VNF package without a TOSCA-Metadata directory, as - described in clause A.2 in ETSI GS NFV-SOL 004): - !------MRF.yaml (main VNFD file) - !------MRF.mf - !------ChangeLog.txt - !------Tests - !----- file(s) - !------Licenses - !----- file(s) - !------Artifacts - !----- install.sh - !----- start.yang - - The NFVO will return a ZIP file of the following format: - !------MRF.yaml - - EXAMPLE 3: Assuming a request is sent for the following VNF package - (a VNF package with the YANG VNFD without a TOSCA-Metadata directory, - as described in clause A.3 in ETSI GS NFV SOL 004): - !----CompanyVNFD.yaml - !----CompanyVNFD.xml - !----CompanyVNFD.mf - !----ChangeLog.txt - !-----Files - !-----Instance Data Files - !---- start.xml - !-----Licenses - !-----Scripts - !----- install.sh - - The NFVO will return a ZIP file of the following format: - !----CompanyVNFD.yaml - !----CompanyVNFD.xml (indicated in the yang_definitions metadata in CompanyVNFD.yaml) - - This method shall follow the provisions specified in the tables 10.4.4.3.2-1 - and 10.4.4.3.2-2 for URI query parameters, request and response data structures, - nd response codes. + The GET method reads the content of the VNFD within a VNF package. See clause 10.4.4.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization @@ -399,14 +211,7 @@ paths: 405: $ref: "../../responses/SOL002SOL003_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 that "onboardingState" of the - # VNF package has a value different from "ONBOARDED". - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409" + $ref: '#/components/responses/VnfdInIndividualOnboardedVnfPackage.Get.409' 416: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/416" 500: @@ -424,12 +229,7 @@ paths: - $ref: '#/components/parameters/VnfPkgId' get: description: | - Query VNF Package Manifest - - The GET method reads the content of the manifest within a VNF package. - This method shall follow the provisions specified in the tables 10.4.4a.3.2-1 - and 10.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 manifest within a VNF package. See clause 10.4.4a.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization @@ -449,9 +249,9 @@ paths: 405: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/405" 406: - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/406" + $ref: '#/components/responses/ManifestInIndividualVnfPackage.Get.406' 409: - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409" + $ref: '#/components/responses/ManifestInIndividualVnfPackage.Get.409' 416: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/416" 500: @@ -466,12 +266,7 @@ paths: - $ref: '#/components/parameters/VnfdId' get: description: | - Query VNF Package Manifest - - The GET method reads the content of the manifest within a VNF package. - This method shall follow the provisions specified in the tables 10.4.4a.3.2-1 - and 10.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 manifest within a VNF package. See clause 10.4.4a.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization @@ -491,9 +286,9 @@ paths: 405: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/405" 406: - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/406" + $ref: '#/components/responses/ManifestInIndividualOnboardedVnfPackage.Get.406' 409: - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409" + $ref: '#/components/responses/ManifestInIndividualOnboardedVnfPackage.Get.409' 416: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/416" 500: @@ -511,21 +306,8 @@ paths: - $ref: '#/components/parameters/VnfPkgId' get: description: | - Fetch VNF Package. - 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. - - 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 - 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 GET method fetches the content of a VNF package identified by the VNF package identifier allocated by the NFVO. + See clause 10.4.5.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization @@ -549,21 +331,9 @@ paths: 406: $ref: "../../responses/SOL002SOL003_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 "onboardingState" of the VNF package has - # a value different from "ONBOARDED". - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409" + $ref: '#/components/responses/IndividualVnfPackageContent.Get.409' 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 package file (e.g. "access after end of file"). - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/416" + $ref: '#/components/responses/IndividualVnfPackageContent.Get.416' 500: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500" 503: @@ -576,21 +346,8 @@ paths: - $ref: '#/components/parameters/VnfdId' get: description: | - Fetch VNF Package. - 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. - - 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 - 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 GET method fetches the content of a VNF package identified by the VNF package identifier allocated by the NFVO. + See clause 10.4.5.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization @@ -614,21 +371,9 @@ paths: 406: $ref: "../../responses/SOL002SOL003_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 "onboardingState" of the VNF package has - # a value different from "ONBOARDED". - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409" + $ref: '#/components/responses/IndividualOnboardedVnfPackageContent.Get.409' 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 package file (e.g. "access after end of file"). - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/416" + $ref: '#/components/responses/IndividualOnboardedVnfPackageContent.Get.416' 500: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500" 503: @@ -644,30 +389,9 @@ paths: - $ref: '#/components/parameters/VnfPkgId' get: description: | - Fetch VNF Package Artifacts. - - 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 not software images and that are external to the VNF package shall be - excluded from the archive unless the URI query parameter "include_external_artifacts" has - been provided. External artifacts shall be included in the archive using the content of - the "artifactPath" attribute as the path. - - 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 10.4.5a.3.2-1 and - 10.4.5a.3.2-2 for URI query parameters, request and response data structures, and response codes. + 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. + See clause 10.4.5a.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization @@ -691,9 +415,9 @@ paths: 406: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/406" 409: - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409" + $ref: '#/components/responses/IndividualVnfPackageArtifacts.Get.409' 416: - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/416" + $ref: '#/components/responses/IndividualVnfPackageArtifacts.Get.416' 500: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500" 503: @@ -706,30 +430,9 @@ paths: - $ref: '#/components/parameters/VnfdId' get: description: | - Fetch VNF Package Artifacts. - - 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 not software images and that are external to the VNF package shall be - excluded from the archive unless the URI query parameter "include_external_artifacts" has - been provided. External artifacts shall be included in the archive using the content of - the "artifactPath" attribute as the path. - - 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 10.4.5a.3.2-1 and - 10.4.5a.3.2-2 for URI query parameters, request and response data structures, and response codes. + 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. + See clause 10.4.5a.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization @@ -753,9 +456,9 @@ paths: 406: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/406" 409: - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409" + $ref: '#/components/responses/IndividualOnboardedVnfPackageArtifacts.Get.409' 416: - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/416" + $ref: '#/components/responses/IndividualOnboardedVnfPackageArtifacts.Get.416' 500: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500" 503: @@ -772,11 +475,7 @@ paths: - $ref: '#/components/parameters/VnfPkgId' get: description: | - Fetch VNF Package Artifacts. - The GET method fetches the content of an artifact within a VNF package. - This method shall follow the provisions specified in the tables - 10.4.6.3.2-1 and 10.4.6.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 10.4.6.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization @@ -801,26 +500,9 @@ paths: 406: $ref: "../../responses/SOL002SOL003_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 "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. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409" + $ref: '#/components/responses/IndividualVnfPackageArtifact.Get.409' 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. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/416" + $ref: '#/components/responses/IndividualVnfPackageArtifact.Get.416' 500: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500" 503: @@ -834,11 +516,7 @@ paths: - $ref: '#/components/parameters/VnfdId' get: description: | - Fetch VNF Package Artifacts. - The GET method fetches the content of an artifact within a VNF package. - This method shall follow the provisions specified in the tables - 10.4.6.3.2-1 and 10.4.6.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 10.4.6.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization @@ -863,26 +541,9 @@ paths: 406: $ref: "../../responses/SOL002SOL003_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 "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. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/409" + $ref: '#/components/responses/IndividualOnboardedVnfPackageArtifact.Get.409' 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. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/416" + $ref: '#/components/responses/IndividualOnboardedVnfPackageArtifact.Get.416' 500: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500" 503: @@ -900,40 +561,14 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version post: description: | - Subscribe. - The POST method creates a new subscription. - This method shall follow the provisions specified in the tables - 10.4.7.3.1-1 and 10.4.7.3.1-2 for URI query parameters, request - and response data structures, and response codes. - As the result of successfully executing this method, a new - "Individual subscription" resource as defined in clause 10.4.8 - shall have been created. This method shall not trigger any notification. - Creation of two "Individual subscription" resources with the same - callback URI and the same filter can result in performance degradation - and will provide duplicates of notifications to the VNFM, and might - make sense only in very rare use cases. Consequently, the NFVO may - either allow creating a new "Individual subscription" resource if - another "Individual 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 - "Individual subscription" resource (in which case it shall return a - "303 See Other" response code referencing the existing "Individual subscription" - resource with the same filter and callback URI). + The POST method creates a new subscription. See clause 10.4.7.3.1. requestBody: $ref: '#/components/requestBodies/PkgmSubscriptionRequest' responses: 201: $ref: '#/components/responses/Subscriptions.Post.201' 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. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/303" + $ref: '#/components/responses/Subscriptions.Post.303' 400: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/400" 401: @@ -947,7 +582,7 @@ paths: 406: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/406" 422: - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/422" + $ref: '#/components/responses/Subscriptions.Post.422' 500: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500" 503: @@ -957,11 +592,8 @@ paths: get: 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. - This method shall follow the provisions specified in the tables 10.4.7.3.2-1 and 10.4.7.3.2-2 - for URI query parameters, request and response data structures, and response codes. + 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 10.4.7.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/filter - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/nextpage_opaque_marker @@ -1000,11 +632,7 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version get: description: | - Query Subscription Information. - The GET method reads an individual subscription. - This method shall follow the provisions specified in the tables - 10.4.8.3.2-1 and 10.4.8.3.2-2 for URI query parameters, - request and response data structures, and response codes. + The GET method reads an individual subscription. See clause 10.4.8.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept responses: @@ -1033,16 +661,7 @@ paths: delete: description: | - Terminate subscription. - The DELETE method terminates an individual subscription. - This method shall follow the provisions specified in the tables 10.4.8.3.5-1 and 10.4.8.3.5-2 - for URI query parameters, request and response data structures, and response codes. - As the result of successfully executing this method, the "Individual subscription" resource - shall not exist any longer. This means that no notifications for that subscription shall be - sent to the formerly-subscribed API consumer. - - NOTE: Due to race conditions, some notifications might still be received by the formerly-subscribed - API consumer for a certain time period after the deletion. + The DELETE method terminates an individual subscription. See clause 10.4.8.3.5. responses: 204: $ref: '#/components/responses/IndividualSubscription.Delete.204' @@ -1092,6 +711,8 @@ components: The identifier is allocated by the VNF provider. This identifier can be retrieved from the "vnfdId" attribute in the VnfPackageOnboardingNotification or VnfPackageChangeNotification. + This identifier can be retrieved from the "vnfdId" attribute in the + VnfPackageOnboardingNotification or VnfPackageChangeNotification. required: true style: simple explode: false @@ -1329,6 +950,46 @@ components: schema: type: string + VnfdInIndividualVnfPackage.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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + VnfdInIndividualOnboardedVnfPackage.Get.200: description: | 200 OK @@ -1366,6 +1027,46 @@ components: schema: type: string + VnfdInIndividualOnboardedVnfPackage.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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + ManifestInIndividualVnfPackage.Get.200: description: | 200 OK @@ -1410,6 +1111,80 @@ components: schema: type: string + ManifestInIndividualVnfPackage.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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + + ManifestInIndividualVnfPackage.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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + ManifestInIndividualOnboardedVnfPackage.Get.200: description: | 200 OK @@ -1454,6 +1229,80 @@ components: schema: type: string + ManifestInIndividualOnboardedVnfPackage.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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + + ManifestInIndividualOnboardedVnfPackage.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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + IndividualVnfPackageContent.Get.200: description: | 200 OK @@ -1522,6 +1371,72 @@ components: schema: type: string + IndividualVnfPackageContent.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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + IndividualVnfPackageContent.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 package 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: The used API version. + style: simple + explode: false + schema: + type: string + IndividualOnboardedVnfPackageContent.Get.200: description: | 200 OK @@ -1552,6 +1467,79 @@ components: schema: type: string + IndividualOnboardedVnfPackageContent.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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + IndividualOnboardedVnfPackageContent.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 package 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + IndividualVnfPackageArtifact.Get.200: description: | 200 OK @@ -1600,6 +1588,276 @@ components: 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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + + IndividualOnboardedVnfPackageArtifact.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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + IndividualOnboardedVnfPackageArtifact.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: + WWW-Authenticate: + description: | + 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: The used API version. + 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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + IndividualVnfPackageArtifacts.Get.416: + description: | + 416 Range Not Satisfiable + + 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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + + IndividualOnboardedVnfPackageArtifacts.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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + IndividualOnboardedVnfPackageArtifacts.Get.416: + description: | + 416 Range Not Satisfiable + + 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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + IndividualOnboardedVnfPackageContent.Get.206: description: | 206 PARTIAL CONTENT @@ -1639,6 +1897,7 @@ components: schema: type: string + IndividualVnfPackageArtifacts.Get.200: description: | 200 OK @@ -1982,6 +2241,85 @@ components: items: $ref: "definitions/SOL003VNFPackageManagement_def.yaml#/definitions/PkgmSubscription" + Subscriptions.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: + 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 PM Job + style: simple + explode: false + schema: + type: string + format: url + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + + Subscriptions.Post.422: + description: | + 422 Unprocessable Entity + + 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: + Content-Type: + description: The MIME type of the body of 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 + Version: + description: The used API version. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + Subscriptions.Get.200: description: | 200 OK @@ -2082,4 +2420,4 @@ components: style: simple explode: false schema: - type: string \ No newline at end of file + type: string diff --git a/src/SOL003/VNFPackageManagement/definitions/SOL003VNFPackageManagement_def.yaml b/src/SOL003/VNFPackageManagement/definitions/SOL003VNFPackageManagement_def.yaml index 0b82df5cf9493b0b536a92457369a0b1556b056a..b65b2b5719593987c548ab8170b99a841fe7dc34 100644 --- a/src/SOL003/VNFPackageManagement/definitions/SOL003VNFPackageManagement_def.yaml +++ b/src/SOL003/VNFPackageManagement/definitions/SOL003VNFPackageManagement_def.yaml @@ -4,11 +4,16 @@ definitions: VnfPkgInfo: description: > - This type represents the information of an VNF package. + This type represents the information of a VNF package. It shall comply with the provisions defined in table 10.5.2.2-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: ETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. type: object required: - id - - packageSecurityOption - operationalState - usageState - vnfmInfo @@ -71,6 +76,7 @@ definitions: packageSecurityOption: description: > Signals the security option used by the package as defined in clause 5.1 of ETSI 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: @@ -111,23 +117,15 @@ definitions: $ref: "#/definitions/PackageOnboardingStateType" operationalState: description: > - Operational state of the VNF package. - If the value of the onboardingState attribute is not equal to - "ONBOARDED", the value of the operationalState attribute shall be - equal to "DISABLED". + Operational state of the VNF package. See note 1. $ref: "#/definitions/PackageOperationalStateType" usageState: description: > - Usage state of the VNF package. - 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". + Usage state of the VNF package. See note 2. $ref: "#/definitions/PackageUsageStateType" vnfmInfo: description: > - Specifies VNFMs compatible with the VNF. This information is copied from the VNFD. - ETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on - TOSCA specifications. + Specifies VNFMs compatible with the VNF. This information is copied from the VNFD. See note 3. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/String" userDefinedData: description: > @@ -229,8 +227,13 @@ definitions: VnfPackageSoftwareImageInfo: description: > - This type represents an artifact contained in or external to a VNF package which - represents a software image. + This type represents an artifact contained in or external to a VNF package which represents a software image. + It shall comply with the provisions defined in table 10.5.3.2-1. + + NOTE 1: The list of permitted values was taken from "Container formats" in OpenStack® documentation: "Disk and container formats for images" + (Available at https://docs.openstack.org/glance/pike/user/formats.html). + NOTE 2: The list of permitted values was adapted from "Disk formats" in OpenStack® documentation: "Disk and container formats for images" + (Available at https://docs.openstack.org/glance/pike/user/formats.html). type: object required: - id @@ -283,8 +286,7 @@ definitions: - DOCKER: docker container format - OVA: OVF package in a tarfile - OVF: OVF container format - The list of permitted values was taken from "Container formats" in - http://docs.openstack.org/image-guide/image-formats.html + See note 1. type: string enum: - AKI @@ -311,8 +313,7 @@ definitions: - VHD: a common disk image format - VHDX: enhanced version of VHD format - VMDK: a common disk image format - The list of permitted values was adapted from "Disk formats" in - http://docs.openstack.org/image-guide/image-formats.html + See note 2. type: string enum: - AKI @@ -455,14 +456,18 @@ definitions: PkgmNotificationsFilter: description: > - This type represents a subscription filter related to notifications - related to VNF package management. - At a particular nesting level in the filter structure, the following - applies: All attributes shall match in order for the filter to match - (logical "and" between different filter attributes). If an attribute - is an array, the attribute shall match if at least one of the values - in the array matches (logical "or" between the values of one filter - attribute). + This type represents a subscription filter related to notifications related to VNF package management. + It shall comply with the provisions defined in table 10.5.3.4-1. + At a particular nesting level in the filter structure, the following applies: All attributes shall match + in order for the filter to match (logical "and" between different filter attributes). If an attribute is + an array, the attribute shall match if at least one of the values in the array matches (logical "or" + between the values of one filter attribute). + + 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 to + 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 anyOf: - oneOf: @@ -479,9 +484,7 @@ definitions: Permitted values: - VnfPackageOnboardingNotification - VnfPackageChangeNotification - The permitted values of the "notificationTypes" attribute are - spelled exactly as the names of the notification types to - facilitate automated code generation systems. + See note 1. type: array items: type: string @@ -492,10 +495,7 @@ definitions: description: > If present, match VNF packages that contain VNF products from certain providers. - The attributes "vnfProductsFromProviders", "vnfdId" and "vnfPkgId" - are alternatives to reference to particular VNF packages in a - filter. They should not be used both in the same filter instance, - but one alternative should be chosen. + See note 2. type: array items: type: object @@ -547,10 +547,7 @@ definitions: vnfdId: description: > Match VNF packages with a VNFD identifier listed in the attribute. - The attributes "vnfProductsFromProviders", "vnfdId" and "vnfPkgId" - are alternatives to reference to particular VNF packages in a - filter. They should not be used both in the same filter instance, - but one alternative should be chosen. + See note 2. type: array items: $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" @@ -561,10 +558,7 @@ definitions: May be present if the "notificationTypes" attribute contains the value "VnfPackageChangeNotification" and shall be absent otherwise. - The attributes "vnfProductsFromProviders", "vnfdId" and "vnfPkgId" - are alternatives to reference to particular VNF packages in a - filter. They should not be used both in the same filter instance, - but one alternative should be chosen. + See note 2. type: array items: $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" diff --git a/src/SOL003/VNFPackageManagementNotification/VNFPackageManagementNotification.yaml b/src/SOL003/VNFPackageManagementNotification/VNFPackageManagementNotification.yaml index dc1be09b2933677ed50770c4a4a3b8dbf4719064..a1a2548a0e5ff23ed387df612f6cbf03d6c2c16b 100644 --- a/src/SOL003/VNFPackageManagementNotification/VNFPackageManagementNotification.yaml +++ b/src/SOL003/VNFPackageManagementNotification/VNFPackageManagementNotification.yaml @@ -10,16 +10,17 @@ info: discrepancies the published ETSI Group Specification takes precedence. Please report bugs to https://forge.etsi.org/rep/nfv/SOL002-SOL003/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 002 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.03.01_60/gs_NFV-SOL003v030301p.pdf + description: ETSI GS NFV-SOL 003 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.05.01_60/gs_NFV-SOL003v030501p.pdf servers: - url: http://127.0.0.1/callback/v2 @@ -29,18 +30,16 @@ paths: ############################################################################### # Notification endpoint VnfPackageOnboardingNotification # ############################################################################### - /URI-is-provided-by-the-client-when-creating-the-subscription-VnfPackageOnboardingNotification: + /URI_is_provided_by_the_client_when_creating_the_subscription-VnfPackageOnboardingNotification: #SOL003 location: 10.4.9 parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version post: description: | - Notify. 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 10.4.9.3.1-1 and 10.4.9.3.1-2 - for URI query parameters, request and response data structures, and response codes. + See clause 10.4.9.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType requestBody: @@ -65,10 +64,8 @@ paths: get: description: | - The GET method allows the API producer to test the notification endpoint that is provided by - the API consumer e.g. during subscription. - This method shall follow the provisions specified in the tables 10.4.9.3.2-1 and 10.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 subscription. See clause 10.4.9.3.2. responses: 204: $ref: '#/components/responses/VnfPackageOnboardingNotification.Get.204' @@ -90,18 +87,16 @@ paths: ############################################################################### # Notification endpoint VnfPackageChangeNotification # ############################################################################### - /URI-is-provided-by-the-client-when-creating-the-subscription-VnfPackageChangeNotification: + /URI_is_provided_by_the_client_when_creating_the_subscription-VnfPackageChangeNotification: #SOL003 location: 10.4.9 parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version post: description: | - Notify. 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 10.4.9.3.1-1 and 10.4.9.3.1-2 - for URI query parameters, request and response data structures, and response codes. + See clause 10.4.9.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType requestBody: @@ -126,10 +121,8 @@ paths: get: description: | - The GET method allows the API producer to test the notification endpoint that is provided by - the API consumer e.g. during subscription. - This method shall follow the provisions specified in the tables 10.4.9.3.2-1 and 10.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 subscription. See clause 10.4.9.3.2. responses: 204: $ref: '#/components/responses/VnfPackageChangeNotification.Get.204' diff --git a/src/SOL003/VNFPerformanceManagement/VNFPerformanceManagement.yaml b/src/SOL003/VNFPerformanceManagement/VNFPerformanceManagement.yaml index 5d65b7932af2f5dd51e637678550a97f60913e98..da39f0a8a59c5094b3f704e39992d250b0435370 100644 --- a/src/SOL003/VNFPerformanceManagement/VNFPerformanceManagement.yaml +++ b/src/SOL003/VNFPerformanceManagement/VNFPerformanceManagement.yaml @@ -10,6 +10,7 @@ info: discrepancies the published ETSI Group Specification takes precedence. Please report bugs to https://forge.etsi.org/rep/nfv/SOL002-SOL003/issues + contact: name: NFV-SOL WG license: @@ -18,8 +19,8 @@ info: version: 2.1.0-impl:etsi.org:ETSI_NFV_OpenAPI:1 externalDocs: - description: ETSI GS NFV-SOL 003 V2.7.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.03.01_60/gs_NFV-SOL003v030301p.pdf + description: ETSI GS NFV-SOL 003 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.05.01_60/gs_NFV-SOL003v030501p.pdf servers: - url: http://127.0.0.1/vnfpm/v2 @@ -44,19 +45,14 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version post: description: | - Create PM Job. - The POST method creates a PM job. - This method shall follow the provisions specified in the tables 6.4.2.3.1-1 and 6.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 as defined - in clause 6.4.3 shall have been created. + The POST method creates a PM job. See clause 6.4.2.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType requestBody: $ref: '#/components/requestBodies/CreatePmJobRequest' responses: 201: - $ref: '#/components/responses/PMJobs.Post.201' + $ref: '#/components/responses/PmJobs.Post.201' 400: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/400" 401: @@ -70,7 +66,7 @@ paths: 406: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/406" 422: - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/422" + $ref: '#/components/responses/PmJobs.Post.422' 500: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500" 503: @@ -80,11 +76,7 @@ paths: get: description: | - Query PM Job. - The API consumer can use this method to retrieve information about PM jobs. - This method shall follow the provisions specified in the tables 6.4.2.3.2-1 and 6.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 PM jobs. + The API consumer can use this method to retrieve information about PM jobs. See clause 6.4.2.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/filter - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/all_fields @@ -94,7 +86,7 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/nextpage_opaque_marker responses: 200: - $ref: '#/components/responses/PMJobs.Get.200' + $ref: '#/components/responses/PmJobs.Get.200' 400: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/400" 401: @@ -127,15 +119,12 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version get: description: | - Query PM Job. - The API consumer can use this method for reading an individual PM job. - This method shall follow the provisions specified in the tables 6.4.3.3.2-1 and 6.4.3.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 PM job. See clause 6.4.3.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept responses: 200: - $ref: '#/components/responses/IndividualPMJob.Get.200' + $ref: '#/components/responses/IndividualPmJob.Get.200' 400: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/400" 401: @@ -159,13 +148,10 @@ paths: patch: description: | - This method allows to modify an "Individual PM job" resource. - This method shall follow the provisions specified in the tables - 6.4.3.3.4-1 and 6.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 6.4.3.3.4. responses: 200: - $ref: '#/components/responses/IndividualPMJob.Patch.200' + $ref: '#/components/responses/IndividualPmJob.Patch.200' 400: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/400" 401: @@ -179,9 +165,9 @@ paths: 406: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/406" 412: - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/412" + $ref: '#/components/responses/IndividualPmJob.Patch.412' 422: - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/422" + $ref: '#/components/responses/IndividualPmJob.Patch.422' 500: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500" 503: @@ -191,14 +177,10 @@ paths: delete: description: | - Delete PM Job. - This method terminates an individual PM job. - This method shall follow the provisions specified in the tables 6.4.3.3.5-1 and 6.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 6.4.3.3.5. responses: 204: - $ref: '#/components/responses/IndividualPMJob.Delete.200' + $ref: '#/components/responses/IndividualPmJob.Delete.200' 400: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/400" 401: @@ -230,9 +212,7 @@ paths: - $ref: '#/components/parameters/ReportId' get: description: | - The API consumer can use this method for reading an individual performance report. - This method shall follow the provisions specified in the tables 6.4.4.3.2-1 and 6.4.4.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 performance report. See clause 6.4.4.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization @@ -272,12 +252,7 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version post: description: | - Create Threshold. - The POST method can be used by the API consumer to create a threshold. - This method shall follow the provisions specified in the tables 6.4.5.3.1-1 and 6.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 6.4.6 shall have been created. + The POST method can be used by the API consumer to create a threshold. See clause 6.4.5.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType requestBody: @@ -298,7 +273,7 @@ paths: 406: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/406" 422: - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/422" + $ref: '#/components/responses/Thresholds.Post.422' 500: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500" 503: @@ -308,10 +283,7 @@ paths: get: description: | - Query Threshold. - The API consumer can use this method to query information about thresholds. - This method shall follow the provisions specified in the tables 6.4.5.3.2-1 and 6.4.5.3.2-2 - for URI query parameters, request and response data structures, and response codes. + The API consumer can use this method to query information about thresholds. See clause 6.4.5.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/filter - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/nextpage_opaque_marker @@ -350,10 +322,7 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version get: description: | - Query Threshold. - The API consumer can use this method for reading an individual threshold - This method shall follow the provisions specified in the tables 6.4.6.3.2-1 and 6.4.6.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 threshold. See clause 6.4.6.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept responses: @@ -382,10 +351,7 @@ paths: patch: description: | - This method allows to modify an "Individual threshold" resource. - This method shall follow the provisions specified in the tables - 6.4.6.3.4-1 and 6.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 6.4.6.3.4. responses: 200: $ref: '#/components/responses/IndividualThreshold.Patch.200' @@ -402,9 +368,9 @@ paths: 406: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/406" 412: - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/412" + $ref: '#/components/responses/IndividualThreshold.Patch.412' 422: - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/422" + $ref: '#/components/responses/IndividualThreshold.Patch.422' 500: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500" 503: @@ -414,12 +380,7 @@ paths: delete: description: | - Delete Threshold. - This method allows to delete a threshold. - This method shall follow the provisions specified in the tables 6.4.6.3.5-1 and 6.4.6.3.5-2 - for URI query parameters, request and response data structures, and response codes. - As the result of successfully executing this method, the "Individual threshold" resource - shall not exist any longer. + This method allows to delete a threshold. See clause 6.4.6.3.5. responses: 204: $ref: '#/components/responses/IndividualThreshold.Delete.200' @@ -444,403 +405,6 @@ paths: 504: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/504" -# ############################################################################## -# # Subscriptions # -# ############################################################################## -# '/subscriptions': -# #SOL003 location: 6.4.7 -# post: -# description: | -# Subscribe. -# The POST method creates a new subscription. -# This method shall follow the provisions specified in the tables 6.4.7.3.1-1 and 6.4.7.3.1-2 -# for URI query parameters, request and response data structures, and response codes. -# As the result of successfully executing this method, a new "Individual subscription" resource -# as defined in clause 6.4.8 shall have been created. This method shall not trigger any notification. -# Creation of two "Individual subscription" resources with the same callbackURI and the same filter -# can result in performance degradation and will provide duplicates of notifications to the NFVO, -# and might make sense only in very rare use cases. Consequently, the VNFM may either allow creating -# a new "Individual subscription" resource if another "Individual subscription" resource with the same -# filter and callbackUri already exists (in which case it shall return the "201 Created" response code), -# or may decide to not create a duplicate "Individual subscription" resource (in which case it shall -# return a "303 See Other" response code referencing the existing "Individual subscription" resource -# with the same filter and callbackUri). -# parameters: -# - name: PmSubscriptionRequest -# description: | -# Details of the subscription to be created. -# in: body -# required: true -# schema: -# $ref: "../../definitions/SOL002SOL003VNFPerformanceManagement_def.yaml#/definitions/PmSubscriptionRequest" -# - name: Accept -# description: | -# Content-Types that are acceptable for the response. -# Reference: IETF RFC 7231 -# in: header -# required: true -# type: string -# - name: Authorization -# description: | -# The authorization token for the request. -# Reference: IETF RFC 7235 -# in: header -# required: false -# type: string -# - name: Content-Type -# description: | -# The MIME type of the body of the request. -# Reference: IETF RFC 7231 -# in: header -# required: true -# type: string -# - name: Version -# description: | -# Version of the API requested to use when responding to this request. -# in: header -# required: true -# type: string -# responses: -# 201: -# description: | -# 201 CREATED -# -# Shall be returned when the subscription has been created successfully. -# A representation of the created "Individual subscription" resource shall be -# returned in the response body, as defined in clause 6.5.2.3. -# The HTTP response shall include a "Location" HTTP header that contains the -# resource URI of the created "Individual subscription" resource. -# headers: -# Location: -# description: The resource URI of the created VNF instance -# type: string -# format: url -# Content-Type: -# description: | -# The MIME type of the body of the request. -# Reference: IETF RFC 7231 -# type: string -# maximum: 1 -# minimum: 1 -# WWW-Authenticate: -# description: | -# Challenge if the corresponding HTTP request has not provided -# authorization, or error details if the corresponding HTTP -# request has provided an invalid authorization token. -# type: string -# maximum: 1 -# minimum: 0 -# Version: -# description: | -# Version of the API used in the response. -# type: string -# maximum: 1 -# minimum: 1 -# schema: -# $ref: "../../definitions/SOL002SOL003VNFPerformanceManagement_def.yaml#/definitions/PmSubscription" -# 303: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/303" -# 400: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/400" -# 401: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/401" -# 403: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/403" -# 404: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/404" -# 405: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/405" -# 406: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/406" -# 422: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/422" -# 500: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500" -# 503: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/503" -# 504: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/504" -# -# get: -# description: | -# Query Subscription Information. -# TThe client can use this method to query the list of active subscriptions -# to Performance management notifications subscribed by the client. -# This method shall follow the provisions specified in the tables 6.4.7.3.2-1 and 6.4.7.3.2-2 -# for URI query parameters, request and response data structures, and response codes. -# parameters: -# - name: Accept -# description: | -# Content-Types that are acceptable for the response. -# Reference: IETF RFC 7231 -# in: header -# required: true -# type: string -# - name: Authorization -# description: | -# The authorization token for the request. -# Reference: IETF RFC 7235 -# in: header -# required: false -# type: string -# - name: filter -# description: | -# Attribute-based filtering expression according to clause 5.2 of ETSI GS NFV-SOL 013. -# The VNFM shall support receiving this parameter as part of the -# URI query string. The NFVO may supply this parameter. -# All attribute names that appear in the PmSubscription and in -# data types referenced from it shall be supported by the VNFM -# in the filter expression. -# in: query -# required: false -# type: string -# - name: nextpage_opaque_marker -# description: | -# Marker to obtain the next page of a paged response. Shall be -# supported by the VNFM if the VNFM supports alternative 2 (paging) -# according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource. -# in: query -# required: false -# type: string -# - name: Version -# description: | -# Version of the API requested to use when responding to this request. -# in: header -# required: true -# type: string -# responses: -# 200: -# description: | -# 200 OK -# -# Shall be returned when the list of subscriptions has been queried successfully. -# The response body shall contain in an array the representations of all active subscriptions -# of the functional block that invokes the method, i.e. zero or more representations of -# PM subscriptions as defined in clause 6.5.2.3. -# If the "filter" URI parameter was supplied in the request, the data in the response body -# shall have been transformed according to the rules specified in clause 5.2.2 of ETSI GS NFV-SOL 013. -# If the VNFM 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 -# type: string -# maximum: 1 -# minimum: 1 -# WWW-Authenticate: -# description: | -# Challenge if the corresponding HTTP request has not provided -# authorization, or error details if the corresponding HTTP -# request has provided an invalid authorization token. -# type: string -# maximum: 1 -# minimum: 0 -# Version: -# description: | -# Version of the API used in the response. -# type: string -# maximum: 1 -# minimum: 1 -# Link: -# description: | -# Reference to other resources. Used for paging in the present document, see clause 4.7.2.1. -# type: string -# maximum: 1 -# minimum: 0 -# schema: -# type: array -# items: -# $ref: "../../definitions/SOL002SOL003VNFPerformanceManagement_def.yaml#/definitions/PmSubscription" -# 400: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/400" -# 401: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/401" -# 403: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/403" -# 404: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/404" -# 405: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/405" -# 406: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/406" -# 422: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/422" -# 500: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500" -# 503: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/503" -# 504: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/504" -# -# ############################################################################### -# # Individual subscription # -# ############################################################################### -# '/subscriptions/{subscriptionId}': -# #SOL003 location: 6.4.8 -# parameters: -# - name: subscriptionId -# description: | -# This identifier can be retrieved from the resource referenced by the -# "Location" HTTP header in the response to a POST request creating a -# new "Individual subscription" resource. It can also be retrieved from the "id" -# attribute in the payload body of that response. -# in: path -# type: string -# required: true -# get: -# description: | -# Query Subscription Information. -# The client can use this method for reading an individual subscription about -# Performance management notifications subscribed by the client. -# This method shall follow the provisions specified in the tables 6.4.8.3.2-1 and 6.4.8.3.2-2 -# for URI query parameters, request and response data structures, and response codes. -# parameters: -# - name: Accept -# description: | -# Content-Types that are acceptable for the response. -# Reference: IETF RFC 7231 -# in: header -# required: true -# type: string -# - name: Authorization -# description: | -# The authorization token for the request. -# Reference: IETF RFC 7235 -# in: header -# required: false -# type: string -# - name: Version -# description: | -# Version of the API requested to use when responding to this request. -# in: header -# required: true -# type: string -# responses: -# 200: -# description: | -# 200 OK -# -# Shall be returned when the subscription has been read successfully. -# The response body shall contain a representation of the "Individual subscription" resource, -# as defined in clause 6.5.2.3. -# headers: -# Content-Type: -# description: | -# The MIME type of the body of the request. -# Reference: IETF RFC 7231 -# type: string -# maximum: 1 -# minimum: 1 -# WWW-Authenticate: -# description: | -# Challenge if the corresponding HTTP request has not provided -# authorization, or error details if the corresponding HTTP -# request has provided an invalid authorization token. -# type: string -# maximum: 1 -# minimum: 0 -# Version: -# description: | -# Version of the API used in the response. -# type: string -# maximum: 1 -# minimum: 1 -# schema: -# $ref: "../../definitions/SOL002SOL003VNFPerformanceManagement_def.yaml#/definitions/PmSubscription" -# 400: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/400" -# 401: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/401" -# 403: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/403" -# 404: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/404" -# 405: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/405" -# 406: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/406" -# 422: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/422" -# 500: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500" -# 503: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/503" -# 504: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/504" -# -# delete: -# description: | -# Terminate Subscription. -# This method terminates an individual subscription. -# This method shall follow the provisions specified in the tables 6.4.8.3.5-1 and 6.4.8.3.5-2 -# for URI query parameters, request and response data structures, and response codes. -# As the result of successfully executing this method, the "Individual subscription" resource -# shall not exist any longer. This means that no notifications for that subscription shall -# be sent to the formerly-subscribed API consumer. -# -# NOTE: Due to race conditions, some notifications might still be received by the formerly-subscribed -# API consumer for a certain time period after the deletion. -# parameters: -# - name: Authorization -# description: | -# The authorization token for the request. -# Reference: IETF RFC 7235 -# in: header -# required: false -# type: string -# - name: Version -# description: | -# Version of the API requested to use when responding to this request. -# in: header -# required: true -# type: string -# responses: -# 204: -# description: | -# 204 NO CONTENT -# -# Shall be returned when the "Individual subscription" resource has been deleted successfully. -# The response body shall be empty. -# headers: -# WWW-Authenticate: -# description: | -# Challenge if the corresponding HTTP request has not provided -# authorization, or error details if the corresponding HTTP -# request has provided an invalid authorization token. -# type: string -# maximum: 1 -# minimum: 0 -# Version: -# description: | -# Version of the API used in the response. -# type: string -# maximum: 1 -# minimum: 1 -# 400: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/400" -# 401: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/401" -# 403: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/403" -# 404: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/404" -# 405: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/405" -# 406: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/406" -# 422: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/422" -# 500: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/500" -# 503: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/503" -# 504: -# $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/504" - - components: parameters: PmJobId: @@ -902,7 +466,7 @@ components: required: true responses: - PMJobs.Post.201: + PmJobs.Post.201: description: | 201 CREATED @@ -938,7 +502,52 @@ components: schema: $ref: "../../definitions/SOL002SOL003VNFPerformanceManagement_def.yaml#/definitions/PmJob" - PMJobs.Get.200: + PmJobs.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 [8], + 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 VNFM has + tested the Notification endpoint as described in + clause 6.4.9.3.2 and the test has failed. + In this case, the "detail" attribute in the + "ProblemDetails" structure sh + headers: + Location: + description: The resource URI of the created PM Job + style: simple + explode: false + schema: + type: string + format: url + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + PmJobs.Get.200: description: | 200 OK @@ -988,7 +597,7 @@ components: items: $ref: "../../definitions/SOL002SOL003VNFPerformanceManagement_def.yaml#/definitions/PmJob" - IndividualPMJob.Get.200: + IndividualPmJob.Get.200: description: | 200 OK @@ -1022,7 +631,7 @@ components: schema: $ref: "../../definitions/SOL002SOL003VNFPerformanceManagement_def.yaml#/definitions/PmJob" - IndividualPMJob.Patch.200: + IndividualPmJob.Patch.200: description: | 200 OK @@ -1055,7 +664,87 @@ components: schema: $ref: "../../definitions/SOL002SOL003VNFPerformanceManagement_def.yaml#/definitions/PmJobModifications" - IndividualPMJob.Delete.200: + IndividualPmJob.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: + Content-Type: + description: | + The MIME type of the body of the response. 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: The used API version. + 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 [8], + 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 VNFM has + tested the Notification endpoint as described in + clause 6.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. 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: The used API version. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + IndividualPmJob.Delete.200: description: | 204 NO CONTENT @@ -1154,6 +843,60 @@ components: schema: $ref: "../../definitions/SOL002SOL003VNFPerformanceManagement_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 [8], 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 VNFM has + tested the Notification endpoint as described in + clause 6.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: + Location: + description: TThe resource URI of the created VNF instance + style: simple + explode: false + schema: + type: string + format: url + Content-Type: + description: | + The MIME type of the body of the response. 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: The used API version. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + Thresholds.Get.200: description: | 200 OK @@ -1275,6 +1018,90 @@ components: schema: $ref: "../../definitions/SOL002SOL003VNFPerformanceManagement_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: + Content-Type: + description: | + The MIME type of the body of the response. 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: The used API version. + 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 [8], 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 VNFM has + tested the Notification endpoint as described in + clause 6.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. 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: The used API version. + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + IndividualThreshold.Delete.200: description: | 204 NO CONTENT diff --git a/src/SOL003/VNFPerformanceManagementNotification/VNFPerformanceManagementNotification.yaml b/src/SOL003/VNFPerformanceManagementNotification/VNFPerformanceManagementNotification.yaml index 3d2f7303e6a506b28a8194b4d54ec880c51de7ad..e4779029b70e76be5a48149ba469af597af104b6 100644 --- a/src/SOL003/VNFPerformanceManagementNotification/VNFPerformanceManagementNotification.yaml +++ b/src/SOL003/VNFPerformanceManagementNotification/VNFPerformanceManagementNotification.yaml @@ -10,6 +10,7 @@ info: discrepancies the published ETSI Group Specification takes precedence. Please report bugs to https://forge.etsi.org/rep/nfv/SOL002-SOL003/issues + contact: name: NFV-SOL WG license: @@ -18,8 +19,8 @@ info: version: 2.1.0-impl:etsi.org:ETSI_NFV_OpenAPI:1 externalDocs: - description: ETSI GS NFV-SOL 003 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.03.01_60/gs_NFV-SOL003v030301p.pdf + description: ETSI GS NFV-SOL 003 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.05.01_60/gs_NFV-SOL003v030501p.pdf servers: - url: http://127.0.0.1/callback/v2 @@ -29,19 +30,16 @@ paths: ############################################################################### # Notification endpoint PerformanceInformationAvailableNotification # ############################################################################### - /URI-is-provided-by-the-client-when-creating-the-subscription-PerformanceInformationAvailableNotification: + /URI_is_provided_by_the_client_when_creating_the_subscription-PerformanceInformationAvailableNotification: #SOL003 location: 6.4.9 parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version post: description: | - Notify. - 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" or "Individual threshold" resource. - This method shall follow the provisions specified in the tables 6.4.9.3.1-1 and 6.4.9.3.1-2 - for URI query parameters, request and response data structures, and response codes. + The POST method delivers a notification regarding a performance management event from API producer to an + API consumer. The API consumer shall have previously created an "Individual PM job" resource + or "Individual threshold" resource. See clause 6.4.9.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType requestBody: @@ -66,10 +64,8 @@ paths: get: description: | - The GET method allows the API producer to test the notification endpoint that is provided - by the API consumer, e.g. during the creation of the PM job or threshold resource. - This method shall follow the provisions specified in the tables 6.4.9.3.2-1 and 6.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 6.4.9.3.2. responses: 204: $ref: '#/components/responses/PerformanceInformationAvailableNotification.Get.204' @@ -91,19 +87,16 @@ 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: #SOL003 location: 6.4.9 parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Version post: description: | - Notify. - 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 subscription resource" with a matching filter. - This method shall follow the provisions specified in the tables 6.4.9.3.1-1 and 6.4.9.3.1-2 - for URI query parameters, request and response data structures, and response codes. + The POST method delivers a notification regarding a performance management event from API producer to an + API consumer. The API consumer shall have previously created an "Individual PM job" resource + or "Individual threshold" resource. See clause 6.4.9.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType requestBody: @@ -128,10 +121,8 @@ paths: get: description: | - The GET method allows the API producer to test the notification endpoint that is provided - by the API consumer e.g. during subscription. - This method shall follow the provisions specified in the tables 6.4.9.3.2-1 and 6.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 6.4.9.3.2. responses: 204: $ref: '#/components/responses/ThresholdCrossedNotification.Get.204' diff --git a/src/SOL003/VNFSnapshotPackageManagement/VNFSnapshotPackageManagement.yaml b/src/SOL003/VNFSnapshotPackageManagement/VNFSnapshotPackageManagement.yaml index 76307edf05319c8a1518a107f695680e012a5443..7fa66462824a8c158cba11dc7c659d712496c22b 100644 --- a/src/SOL003/VNFSnapshotPackageManagement/VNFSnapshotPackageManagement.yaml +++ b/src/SOL003/VNFSnapshotPackageManagement/VNFSnapshotPackageManagement.yaml @@ -6,24 +6,25 @@ info: SOL003 - 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/SOL002-SOL003/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 003 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.03.01_60/gs_NFV-SOL003v030301p.pdf + description: ETSI GS NFV-SOL 003 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.05.01_60/gs_NFV-SOL003v030501p.pdf servers: - - url: http://0.0.0.1/vnfsnapshotpkgm/v1 - - url: https://0.0.0.1/vnfsnapshotpkgm/v1 + - url: http://127.0.0.1/vnfsnapshotpkgm/v1 + - url: https://127.0.0.1/vnfsnapshotpkgm/v1 paths: ############################################################################### @@ -38,7 +39,7 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization 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 12.4.2.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType @@ -79,7 +80,7 @@ paths: - $ref: '#/components/parameters/VnfSnapshotPkgId' 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 12.4.3.3.2 parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType @@ -120,7 +121,7 @@ paths: - $ref: '#/components/parameters/VnfSnapshotPkgId' get: description: | - The GET method fetches the content of a VNF snapshot package. + The GET method fetches the content of a VNF snapshot package. See clause 12.4.4.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType @@ -142,9 +143,9 @@ paths: 406: $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406 409: - $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/409 + $ref: '#/components/responses/PackageContent.Get.409' 416: - $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416 + $ref: '#/components/responses/PackageContent.Get.416' 422: $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/422 429: @@ -164,7 +165,7 @@ paths: - $ref: '#/components/parameters/ArtifactPath' get: description: | - The GET method fetches the content of an artifact within the VNF snapshot package. + The GET method fetches the content of an artifact within the VNF snapshot package. See clause 12.4.5.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType @@ -186,9 +187,9 @@ paths: 406: $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/406 409: - $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/409 + $ref: '#/components/responses/IndividualArtifact.Get.409' 416: - $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/416 + $ref: '#/components/responses/IndividualArtifact.Get.416' 422: $ref: ../../responses/SOL002SOL003_resp.yaml#/components/responses/422 429: @@ -409,6 +410,72 @@ components: type: string format: binary + PackageContent.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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + + PackageContent.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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + IndividualArtifact.Get.200: description: | 200 OK @@ -493,4 +560,70 @@ components: application/*: schema: type: string - format: binary \ No newline at end of file + format: binary + + 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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string + Content-Type: + description: | + The MIME type of the body of the response. Reference: IETF RFC 7231 + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: "../../definitions/SOL002SOL003_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: + WWW-Authenticate: + description: | + 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: The used API version. + style: simple + explode: false + schema: + type: string \ No newline at end of file diff --git a/src/SOL003/VNFSnapshotPackageManagement/definitions/SOL003VNFSnapshotPackageManagement_def.yaml b/src/SOL003/VNFSnapshotPackageManagement/definitions/SOL003VNFSnapshotPackageManagement_def.yaml index 15ef041f0fd056d9829695db39fdb95d3b0f6c1d..24963fe4f18d5f412eb2229f71a0e92413b5843b 100644 --- a/src/SOL003/VNFSnapshotPackageManagement/definitions/SOL003VNFSnapshotPackageManagement_def.yaml +++ b/src/SOL003/VNFSnapshotPackageManagement/definitions/SOL003VNFSnapshotPackageManagement_def.yaml @@ -4,7 +4,10 @@ definitions: VnfSnapshotPkgInfo: description: > - This type represents the information of a VNF snapshot package. + This type represents the information of a VNF snapshot package. It shall comply with the provisions defined in table 12.5.2.2-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 @@ -25,9 +28,7 @@ definitions: a globally unique way. It is created during the "build VNF snapshot package operation". Multiples instances of the same VNF snapshot package share the same vnfSnapshotPkgUniqueId. - 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. + See note. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Identifier" name: description: > @@ -38,17 +39,13 @@ definitions: Checksum of the stored VNF snapshot package. Hash algorithms applicable to VNF snapshot packages are defined in ETSI GS NFV-SOL 010. - 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. + See note. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/Checksum" createdAt: description: > Timestamp indicating when the VNF snapshot package creation has been completed. - 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. + See note. $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/DateTime" vnfSnapshotId: description: > @@ -61,9 +58,7 @@ definitions: of the VNF snapshot and contained in the VNF snapshot package. This identifier is allocated by the VNFM during the VNF snapshot creation. - 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. + See note. type: object items: $ref: "../../../definitions/SOL002SOL003_def.yaml#/definitions/IdentifierLocal" @@ -86,9 +81,7 @@ definitions: 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. - 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. + See note. type: object items: $ref: "#/definitions/VnfcSnapshotImageInfo" @@ -96,9 +89,7 @@ definitions: description: > Information about VNF snapshot artifacts that are not VNFC snapshot images. - 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. + See note. type: object items: $ref: "#/definitions/SnapshotPkgArtifactInfo" @@ -111,6 +102,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 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 @@ -120,6 +112,7 @@ definitions: - UPLOADING - EXTRACTING - AVAILABLE + - PROCESSING - ERROR - ERROR_EXTRACTING isCancelPending: @@ -185,8 +178,13 @@ definitions: VnfcSnapshotImageInfo: description: > - This type represents an artifact contained in a VNF snapshot package which - represents a snapshot image. + This type represents an artifact contained in a VNF snapshot package which represents a snapshot image. + It shall comply with the provisions defined in table 12.5.3.2-1. + + NOTE 1: The list of permitted values was taken from "Container formats" in OpenStack® documentation: "Disk and container formats for images" + (Available at https://docs.openstack.org/glance/pike/user/formats.html). + NOTE 2: The list of permitted values was adapted from "Disk formats" in OpenStack® documentation: "Disk and container formats for images" + (Available at https://docs.openstack.org/glance/pike/user/formats.html). type: object required: - id @@ -204,6 +202,13 @@ definitions: id: 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/SOL002SOL003_def.yaml#/definitions/IdentifierLocal" name: description: > @@ -236,8 +241,7 @@ definitions: - OVA: OVF package in a tarfile - OVF: OVF container format - NOTE: The list of permitted values was taken from "Container formats" in [i.5] - (OpenStack® documentation: "Disk and container formats for images"). + See note 1. type: string enum: - AKI @@ -263,8 +267,7 @@ definitions: - VHDX: enhanced version of VHD format - VMDK: a common disk image format - NOTE: The list of permitted values was adapted from "Disk formats" in [i.5] - (OpenStack® documentation: "Disk and container formats for images"). + See note 2. type: string enum: - AKI diff --git a/src/SOL003/VirtualisedResourcesQuotaAvailableNotification/VirtualisedResourcesQuotaAvailableNotification.yaml b/src/SOL003/VirtualisedResourcesQuotaAvailableNotification/VirtualisedResourcesQuotaAvailableNotification.yaml index 35b96b1e07da1fbd65dcfc31a013134dd78561d1..0d36abfa5bc15e450ff215b3e2211162d035fabc 100644 --- a/src/SOL003/VirtualisedResourcesQuotaAvailableNotification/VirtualisedResourcesQuotaAvailableNotification.yaml +++ b/src/SOL003/VirtualisedResourcesQuotaAvailableNotification/VirtualisedResourcesQuotaAvailableNotification.yaml @@ -5,12 +5,12 @@ info: description: | SOL003 - Virtualised Resources Quota Available 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/SOL002-SOL003/issues + contact: name: NFV-SOL WG license: @@ -19,8 +19,8 @@ info: version: "1.2.1-impl:etsi.org:ETSI_NFV_OpenAPI:1" externalDocs: - description: ETSI GS NFV-SOL 003 V3.3.1 - url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.03.01_60/gs_NFV-SOL003v030301p.pdf + description: ETSI GS NFV-SOL 003 V3.5.1 + url: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/03.05.01_60/gs_NFV-SOL003v030501p.pdf servers: - url: http://127.0.0.1/vrqan/v1 @@ -42,22 +42,7 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization post: description: | - Subscribe. - The POST method creates a new subscription. - This method shall follow the provisions specified in the tables 11.4.2.3.1-1 and 11.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 subscription" - resource as defined in clause 11.4.3 shall have been created. This method shall not - trigger any notification. - Creation of two "Individual subscription" resources with the same callback URI and - the same filter can result in performance degradation and will provide duplicates - of notifications to the VNFM, and might make sense only in very rare use cases. - Consequently, the NFVO may either allow creating a new "Individual subscription" - resource if another "Individual 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 "Individual subscription" resource (in which case - it shall return a "303 See Other" response code referencing the existing "Individual subscription" - resource with the same filter and callback URI). + The POST method creates a new subscription. See clause 11.4.2.3.1. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Accept - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/ContentType @@ -67,15 +52,7 @@ paths: 201: $ref: '#/components/responses/Subscriptions.Post.201' 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. - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/303" + $ref: '#/components/responses/Subscriptions.Post.303' 400: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/400" 401: @@ -87,7 +64,7 @@ paths: 405: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/405" 422: - $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/422" + $ref: '#/components/responses/Subscriptions.Post.422' 406: $ref: "../../responses/SOL002SOL003_resp.yaml#/components/responses/406" 500: @@ -99,11 +76,8 @@ paths: get: 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. - This method shall follow the provisions specified in the tables 11.4.2.3.2-1 and 11.4.2.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 11.4.2.3.2. parameters: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/filter - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/nextpage_opaque_marker @@ -143,10 +117,7 @@ paths: - $ref: ../../components/SOL002SOL003_params.yaml#/components/parameters/Authorization get: description: | - Query Subscription Information. - The GET method reads an individual subscription. - This method shall follow the provisions specified in the tables 11.4.3.3.2-1 and 11.4.3.3.2-2 - for URI query parameters, request and response data structures, and response codes. + The GET method reads an individual subscription. See clause 11.4.3.3.2. responses: 200: $ref: '#/components/responses/IndividualSubscription.Get.200' @@ -173,15 +144,7 @@ paths: delete: description: | - Terminate subscription. - The DELETE method terminates an individual subscription. - This method shall follow the provisions specified in the tables 11.4.3.3.5-1 and 11.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 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. + The DELETE method terminates an individual subscription. See clause 11.4.3.3.5. responses: 204: $ref: '#/components/responses/IndividualSubscription.Delete.204' @@ -225,7 +188,6 @@ components: type: string requestBodies: - VrQuotaAvailSubscriptionRequest: description: | Details of the subscription to be created. @@ -280,6 +242,100 @@ components: schema: $ref: ./definitions/SOL003VirtualisedResourcesQuotaAvailableNotification_def.yaml#/definitions/VrQuotaAvailSubscription + Subscriptions.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: | + 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 + Location: + description: | + The resource URI of the created VNF instance + style: simple + explode: false + schema: + type: string + format: url + + 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 [8], 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 11.4.4.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: | + 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/SOL002SOL003_def.yaml#/definitions/ProblemDetails" + Subscriptions.Get.200: description: | 200 OK diff --git a/src/components/SOL002SOL003_params.yaml b/src/components/SOL002SOL003_params.yaml index 2211c23c42ca3de0eb569b07cd96b89bb17e2313..a277a550a2e241ddbfa2ca875128fdbf9ff80d40 100644 --- a/src/components/SOL002SOL003_params.yaml +++ b/src/components/SOL002SOL003_params.yaml @@ -40,7 +40,7 @@ components: name: filter description: > Attribute-based filtering expression according to clause 5.2 of ETSI - GS NFV-SOL 013. The NFV-MANO functional entity shall support + GS NFV-SOL 013. The VNFM shall support receiving this parameter as part of the URI query string. The API consumer may supply this parameter. All attribute names that appear in the FmSubscription and in data types referenced from it shall be @@ -89,7 +89,18 @@ components: in: query description: >- Indicates to exclude the following complex attributes from the response. See clause 5.3 of ETSI GS NFV-SOL 013 - for details. The NFV-MANO functional entity shall support this parameter. + for details. The VNFM shall support this parameter. + The following attributes shall be excluded from the VnfLcmOpOcc structure in the response + body if this parameter is provided, or none of the parameters "all_fields," "fields", + "exclude_fields", "exclude_default" are provided: + - operationParams + - error + - resourceChanges + - changedInfo + - changedExtConnectivity + - lcmCoordinations + - modificationsTriggeredByVnfPkgChange + - warnings required: false schema: type: string @@ -98,7 +109,7 @@ components: name: nextpage_opaque_marker description: > Marker to obtain the next page of a paged response. Shall be supported by - the NFV-MANO functional entity if the entity supports alternative 2 (paging) + the VNFM if the entity supports alternative 2 (paging) according to clause 5.4.2.1 of ETSI GS NFV-SOL 013 for this resource. in: query required: false diff --git a/src/definitions/SOL002SOL003VNFFaultManagement_def.yaml b/src/definitions/SOL002SOL003VNFFaultManagement_def.yaml index 8ba60530565a7fbbae199f15b99fd9e35cc97058..88dcbf32a8346da2e4d2f7175de0619eb7bc460f 100644 --- a/src/definitions/SOL002SOL003VNFFaultManagement_def.yaml +++ b/src/definitions/SOL002SOL003VNFFaultManagement_def.yaml @@ -256,13 +256,15 @@ definitions: FmNotificationsFilter: description: > - This type represents a subscription filter related to notifications - about VNF faults. - At a particular nesting level in the filter structure, the following - applies: All attributes shall match in order for the filter to match - (logical "and" between different filter attributes). If an attribute is - an array, the attribute shall match if at least one of the values in the - array matches (logical "or" between the values of one filter attribute). + This type represents a subscription filter related to notifications about VNF faults. + It shall comply with the provisions defined in table 7.5.3.2-1. + At a particular nesting level in the filter structure, the following applies: All attributes + shall match in order for the filter to match (logical "and" between different filter attributes). + If an attribute is an array, the attribute shall match if at least one of the values in the array + matches (logical "or" between the values of one filter attribute). + + 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: vnfInstanceSubscriptionFilter: @@ -271,14 +273,13 @@ definitions: $ref: "SOL002SOL003_def.yaml#/definitions/VnfInstanceSubscriptionFilter" notificationTypes: description: > - Match particular notification types. + Match particular notification types. + Permitted values: - * AlarmNotification - * AlarmClearedNotification - * AlarmListRebuiltNotification - The permitted values of the "notificationTypes" attribute are - spelled exactly as the names of the notification types to - facilitate automated code generation systems. + - AlarmNotification + - AlarmClearedNotification + - AlarmListRebuiltNotification + See note. type: array items: type: string diff --git a/src/definitions/SOL002SOL003VNFIndicator_def.yaml b/src/definitions/SOL002SOL003VNFIndicator_def.yaml index 978c3500e3c37ada355114e61691347ed0a05ffe..14ed7fdc503c87135505d25bbc931c1406e00fc6 100644 --- a/src/definitions/SOL002SOL003VNFIndicator_def.yaml +++ b/src/definitions/SOL002SOL003VNFIndicator_def.yaml @@ -4,7 +4,9 @@ definitions: VnfIndicator: description: > - This type represents a VNF indicator value. + This type represents a VNF indicator value. It shall comply with the provisions defined in table 8.5.2.2-1. + + NOTE: ETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. type: object required: - id @@ -23,10 +25,7 @@ definitions: type: string value: description: > - Provides the value of the indicator. The value format is defined in - the VNFD. - ETSI GS NFV-SOL 001 specifies the structure and format of the - VNFD based on TOSCA specifications. + Provides the value of the indicator. The value format is defined in the VNFD. See note. type: object vnfInstanceId: description: > @@ -51,13 +50,15 @@ definitions: VnfIndicatorNotificationsFilter: description: > - This type represents a subscription filter for notifications - related to VNF indicators. - At a particular nesting level in the filter structure, the following - applies: All attributes shall match in order for the filter to match - (logical "and" between different filter attributes). If an attribute is - an array, the attribute shall match if at least one of the values in the - array matches (logical "or" between the values of one filter attribute). + This type represents a subscription filter for notifications related to VNF indicators. + It shall comply with the provisions defined in table 8.5.3.2-1. + At a particular nesting level in the filter structure, the following applies: + All attributes shall match in order for the filter to match (logical "and" between different + filter attributes). If an attribute is an array, the attribute shall match if at least one of + the values in the array matches (logical "or" between the values of one filter attribute). + + 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: vnfInstanceSubscriptionFilter: @@ -66,13 +67,12 @@ definitions: $ref: "SOL002SOL003_def.yaml#/definitions/VnfInstanceSubscriptionFilter" notificationTypes: description: > - Match particular notification types. + Match particular notification types. + Permitted values: - * VnfIndicatorValueChangeNotification - * SupportedIndicatorsChangeNotification - The permitted values of the "notificationTypes" attribute are spelled exactly - as the names of the notification types to facilitate automated code generation - systems. + - VnfIndicatorValueChangeNotification + - SupportedIndicatorsChangeNotification + See note. type: string enum: - VnfIndicatorValueChangeNotification @@ -152,9 +152,10 @@ definitions: VnfIndicatorValueChangeNotification: description: > - This type represents a VNF indicator value change notification. - The notification shall be triggered by the VNFM when the value of an - indicator has changed. + This type represents a VNF indicator value change notification. It shall comply with the provisions defined in table 8.5.2.5-1. + The notification shall be triggered by the VNFM when the value of an indicator has changed. + + NOTE: ETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. type: object required: - id @@ -198,10 +199,7 @@ definitions: type: string value: description: > - Provides the value of the VNF indicator. The value format is defined - in the VNFD. - ETSI GS NFV-SOL 001 specifies the structure and format of the VNFD - based on TOSCA specifications. + Provides the value of the VNF indicator. The value format is defined in the VNFD. See note. type: object vnfInstanceId: description: > @@ -229,9 +227,12 @@ definitions: description: > This type represents a notification to inform the receiver that the set of indicators supported by a VNF instance has changed. It shall comply with the provisions defined in table 8.5.2.6-1. + The notification shall be triggered by the VNFM when the set of supported VNF indicators has changed as a side effect of the "Change current VNF package" operation. It may be triggered by the VNFM when a VNF has been instantiated. + + NOTE: ETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. type: object required: - id @@ -281,10 +282,7 @@ definitions: $ref: "SOL002SOL003_def.yaml#/definitions/IdentifierInVnfd" name: description: > - Human readable name of the VNF indicator. - Shall be present if defined in the VNFD. - ETSI GS NFV-SOL 001 specifies the structure and format of - the VNFD based on TOSCA specifications. + Human readable name of the VNF indicator. Shall be present if defined in the VNFD. See note. type: string _links: description: > diff --git a/src/definitions/SOL002SOL003VNFLifecycleManagement_def.yaml b/src/definitions/SOL002SOL003VNFLifecycleManagement_def.yaml index 637afa64f62ae777e116d3ad164b0911becdb69d..9dd75f7b4d4a8ee075604d742b472430d1110f24 100644 --- a/src/definitions/SOL002SOL003VNFLifecycleManagement_def.yaml +++ b/src/definitions/SOL002SOL003VNFLifecycleManagement_def.yaml @@ -65,8 +65,12 @@ definitions: ScaleVnfToLevelRequest: description: > - This type represents request parameters for the "Scale VNF to Level" - operation. + This type represents request parameters for the "Scale VNF to Level" operation. + It shall comply with the provisions defined in table 5.5.2.6-1. See clause B.2 + for an explanation of VNF scaling. + + NOTE: Either the instantiationLevelId attribute or the scaleInfo attribute shall + be included. type: object anyOf: - oneOf: @@ -79,15 +83,13 @@ definitions: description: > Identifier of the target instantiation level of the current deployment flavour to which the VNF is requested to be scaled. - Either the instantiationLevelId attribute or the scaleInfo attribute - shall be included. + See note. $ref: "SOL002SOL003_def.yaml#/definitions/IdentifierInVnfd" scaleInfo: description: > For each scaling aspect of the current deployment flavour, indicates the target scale level to which the VNF is to be scaled. - Either the instantiationLevelId attribute or the scaleInfo attribute - shall be included. + See note. type: array items: $ref: "#/definitions/ScaleInfo" @@ -148,6 +150,23 @@ definitions: description: > List of identifiers entries to be deleted from the 'vnfcInfoModifications" attribute array to be used as "deleteIdList" as defined below this table. + The following provisions shall apply when modifying an attribute that is an array of objects of type + "VnfcInfo" by supplying an array of objects of type "VnfcInfoModifications". + Assumptions: + 1) "oldList" is the "VnfcInfo" array to be modified and "newList" is the "VnfcInfoModifications" + array that contains the changes. + 2) "oldEntry" is an entry in "oldList" and "newEntry" is an entry in "newList". + 3) A "newEntry" has a "corresponding entry" if there exists an "oldEntry" that has the same content + of the "id" attribute as the "newEntry"; a "newEntry" has no corresponding entry if no such + "oldEntry" exists. + 4) In any array of "VnfcInfo" resp. "VnfcInfoModifications" structures, the content of "id" is unique + (i.e. there are no two entries with the same content of "id"). + Provisions: + 1) For each "newEntry" in "newList" that has no corresponding entry in "oldList", the "oldList" array + shall be modified by adding that "newEntry". + 2) For each "newEntry" in "newList" that has a corresponding "oldEntry" in "oldList", + the value of "oldEntry" shall be updated with the content of "newEntry" as specified + for the data type of "newEntry (refer to clause 5.5.3.24 for the data type "VnfcInfoModifications"). type: array items: $ref: "SOL002SOL003_def.yaml#/definitions/Identifier" @@ -241,6 +260,15 @@ definitions: $ref: "SOL002SOL003_def.yaml#/definitions/Link" ExtVirtualLinkInfo: + description: > + This type represents information about an external VL. It shall comply with the provisions defined in table 5.5.3.2-1. + + NOTE: This attribute reflects the current configuration information that has resulted from merging into this attribute + the "VnfExtCpData" information which was passed as part of the "ExtVirtualLinkData" structure in the input of the + most recent VNF LCM operation such as "InstantiateVnfRequest", "ChangeExtVnfConnectivityRequest", "ChangeVnfFlavourRequest" + or "ChangeCurrentVnfPkgRequest", or in the Grant response. If applying such change results in an empty list of + "currentVnfExtCpData" structure instances, the affected instance of "ExtVirtualLinkInfo" shall be removed from its + parent data structure. type: object required: - id @@ -266,14 +294,8 @@ definitions: $ref: "#/definitions/ExtLinkPortInfo" currentVnfExtCpData: description: > - Allows the API consumer to read the current CP configuration information for the connection of external CPs - to the external virtual link. - This attribute reflects the current configuration information that has resulted from merging into this attribute - the "VnfExtCpData" information which was passed as part of the "ExtVirtualLinkData" structure in the input of - the most recent VNF LCM operation such as "InstantiateVnfRequest", "ChangeExtVnfConnectivityRequest", - "ChangeVnfFlavourRequest" or "ChangeCurrentVnfPkgRequest", or has been provided by the NFVO during the granting - procedure. If applying such change results in an empty list of "currentVnfExtCpData" structure instances, the - affected instance of "ExtVirtualLinkInfo" shall be removed from its parent data structure. + Allows the API consumer to read the current CP configuration information for the connection of external CPs + to the external virtual link. See note. type: array items: $ref: "SOL002SOL003_def.yaml#/definitions/VnfExtCpData" @@ -301,6 +323,19 @@ definitions: type: integer VnfLinkPortInfo: + description: > + This type represents a link port of an internal VL of a VNF. It shall comply with the provisions + defined in table 5.5.3.8 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. + NOTE 2: Annex A.4 of ETSI GS NFV-IFA 007 provides examples for configurations where both vipCpInstanceId + and vnfcCpInstanceId are present (UC#5 and UC#5-b), only vnfcCpInstanceId is present (UC#2), or + only vipCpInstanceId is present (UC6 and UC#6-b). + NOTE 3: The value of "trunkResourceId" is scoped by the value of "vimConnectionId" in the "resourceHandle" + attribute. type: object required: - id @@ -317,37 +352,51 @@ definitions: $ref: "SOL002SOL003_def.yaml#/definitions/ResourceHandle" cpInstanceId: description: > - When the link port is used for external connectivity by the VNF, - this attribute represents the identifier of the external CP of the - VNF to be connected to this link port. - When the link port is used for internal connectivity in the VNF, - this attribute represents the identifier of the VNFC CP to be connected to this link - port. - Shall be present when the link port is used for external - connectivity by the VNF. + When the link port is used for external connectivity by the VNF, this attribute represents the + identifier of the external CP associated with this link port. + + When the link port is used for internal connectivity in the VNF, this attribute represents the + identifier of the VNFC CP to be connected to this link port. + + Shall be present when the link port is used for external connectivity by the VNF. May be present if used to reference a VNFC CP instance. - There shall be at most one link port associated with any external - connection point instance or internal connection point - (i.e. VNFC CP) instance. - The value refers to an "extCpInfo" item in the VnfInstance or a - "vnfcCpInfo" item of a "vnfcResourceInfo" item in the VnfInstance. + There shall be at most one link port associated with any external connection point instance or + internal connection point (i.e. VNFC CP) instance. + The value refers to an "extCpInfo" item in the VnfInstance or a "vnfcCpInfo" item of a "vnfcResourceInfo" + item in the VnfInstance. See note 1. $ref: "SOL002SOL003_def.yaml#/definitions/IdentifierInVnf" cpInstanceType: description: > - Type of the CP instance that is identified by cpInstanceId. - Shall be present if "cpInstanceId" is present, and shall be absent otherwise. + Type of the CP instance that is identified by cpInstanceId. + Shall be present if "cpInstanceId" is present and shall be absent otherwise. + Permitted values: - VNFC_CP: The link port is connected to a VNFC CP - EXT_CP: The link port is associated to an external CP. + - 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: "SOL002SOL003_def.yaml#/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: "SOL002SOL003_def.yaml#/definitions/IdentifierInVim" 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. + 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. It shall comply with the provisions defined in table 5.5.3.9-1. + + 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 @@ -370,24 +419,38 @@ definitions: external connection point instance. The value refers to an "extCpInfo" item in the VnfInstance. $ref: "SOL002SOL003_def.yaml#/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: "SOL002SOL003_def.yaml#/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: "SOL002SOL003_def.yaml#/definitions/IdentifierInVim" CpProtocolInfo: description: > - This type describes the protocol layer(s) that a CP uses together with - protocol-related information, like addresses. + This type describes the protocol layer(s) that a CP uses together with protocol-related information, like addresses. + It shall comply with the provisions defined in table 5.5.3.9b-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 properties: layerProtocol: description: > - The identifier of layer(s) and protocol(s) associated to the network - address information. + The identifier of layer(s) and protocol(s) associated to the network address information. + Permitted values: IP_OVER_ETHERNET - This attribute allows to signal the addition of further types of - layer and protocol in future versions of the present document in a - backwards-compatible way. In the current version of the present - document, only IP over Ethernet is supported. + See note. type: string enum: - IP_OVER_ETHERNET @@ -400,8 +463,19 @@ definitions: IpOverEthernetAddressInfo: description: > - This type represents information about a network address that has been - assigned. + This type represents information about a network address that has been assigned. + It shall comply with the provisions defined in table 5.5.3.10-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: @@ -416,25 +490,16 @@ definitions: properties: macAddress: description: > - MAC address, if assigned. - At least one of "macAddress" or "ipAddresses" shall be present. + MAC address, if assigned. See note 1. $ref: "SOL002SOL003_def.yaml#/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. + Identification of the network segment to which the Cp instance connects to. See notes 3 and 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. - At least one of "macAddress" or "ipAddresses" shall be present. + 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 @@ -451,9 +516,7 @@ definitions: - IPV6 addresses: description: > - Fixed addresses assigned (from the subnet defined by - "subnetId" if provided). - Exactly one of "addresses" or "addressRange" shall be present. + Fixed addresses assigned (from the subnet defined by "subnetId" if provided). See note 2. type: array items: $ref: "SOL002SOL003_def.yaml#/definitions/IpAddress" @@ -466,8 +529,7 @@ definitions: type: boolean addressRange: description: > - An IP address range used, e.g., in case of egress connections. - Exactly one of "addresses" or "addressRange" shall be present. + An IP address range used, e.g. in case of egress connections. See note 2. type: object required: - minAddress @@ -518,14 +580,15 @@ definitions: LifecycleChangeNotificationsFilter: description: > - This type represents a subscription filter related to notifications - about VNF lifecycle changes. - At a particular nesting level in the filter structure, the following - applies: All attributes shall match in order for the filter to match - (logical "and" between different filter attributes). If an attribute is - an array, the attribute shall match if at least one of the values in - the array matches (logical "or" between the values of one filter - attribute). + This type represents a subscription filter related to notifications about VNF lifecycle changes. + It shall comply with the provisions defined in table 5.5.3.12-1. + At a particular nesting level in the filter structure, the following applies: All attributes shall + match in order for the filter to match (logical "and" between different filter attributes). + If an attribute is an array, the attribute shall match if at least one of the values in the array + matches (logical "or" between the values of one filter attribute). + + 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: vnfInstanceSubscriptionFilter: @@ -534,14 +597,13 @@ definitions: $ref: "SOL002SOL003_def.yaml#/definitions/VnfInstanceSubscriptionFilter" notificationTypes: description: > - Match particular notification types. + Match particular notification types. + Permitted values: - * VnfLcmOperationOccurrenceNotification - * VnfIdentifierCreationNotification - * VnfIdentifierDeletionNotification - The permitted values of the "notificationTypes" attribute are - spelled exactly as the names of the notification types to - facilitate automated code generation systems. + - VnfLcmOperationOccurrenceNotification + - VnfIdentifierCreationNotification + - VnfIdentifierDeletionNotification + See note. type: array items: type: string @@ -597,8 +659,13 @@ definitions: VnfExtCpInfo: description: > - This type represents information about an external CP of a VNF. - It shall comply with the provisions defined in table 5.5.3.25 1. + This type represents information about an external CP of a VNF. + It shall comply with the provisions defined in table 5.5.3.17 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 4.4.1.11. type: object required: - id @@ -608,6 +675,8 @@ definitions: oneOf: - required: - associatedVnfcCpId + - required: + - associatedVipCpId - required: - associatedVnfVirtualLinkId properties: @@ -638,8 +707,8 @@ definitions: $ref: "#/definitions/CpProtocolInfo" extLinkPortId: description: > - Identifier of the "ExtLinkPortInfo" structure inside the "ExtVirtualLinkInfo" structure. - Shall be present if the CP is associated to a link port. + 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: "SOL002SOL003_def.yaml#/definitions/Identifier" metadata: description: > @@ -647,16 +716,23 @@ definitions: $ref: "SOL002SOL003_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. See note. - $ref: "SOL002SOL003_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: "SOL002SOL003_def.yaml#/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: "SOL002SOL003_def.yaml#/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. See note. - $ref: "SOL002SOL003_def.yaml#/definitions/Identifier" + Identifier of the "VnfVirtualLinkResourceInfo" structure that represents 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: "SOL002SOL003_def.yaml#/definitions/IdentifierInVnf" VnfOperationalStateType: description: > @@ -810,7 +886,9 @@ definitions: VnfcInfoModifications: description: > This type represents modifications of an entry in an array of "VnfcInfo" objects. - It shall comply with the provisions defined in table 5.5.3.24-1. + * NOTE: The attribute "id" in this data type represents the same identifier as the attribute + "vnfcInstanceId" in other related data types in the present document. For reasons of backward + compatibility, this misalignment is not corrected. type: object required: - id @@ -819,22 +897,20 @@ definitions: id: description: > Identifier of the VNFC instance of which the information is to be modified. - The identifier references the "id" attribute in a "VnfcInfo" structure. - The attribute "id" in this data type represents the same identifier as the attribute - "vnfcInstanceId" in other related data types in the present document. For reasons of - backward compatibility, this misalignment is not corrected. + The identifier references the "id" attribute in a "VnfcInfo" structure. See note. $ref: "SOL002SOL003_def.yaml#/definitions/IdentifierInVnf" vnfcConfigurableProperties: description: > Changes of the configurable properties of the VNFC instance. When this structure is part of a request, the modifications signalled in this attribute shall be applied according to the rules of JSON Merge Patch (see IETF RFC 7396). + In addition, the provisions in clause 5.7 shall apply. $ref: "SOL002SOL003_def.yaml#/definitions/KeyValuePairs" VnfcInfo: description: > - This type represents the information about a VNFC instance that is part of a VNF instance. It shall comply with the - provisions defined in table 5.5.3.23-1. + This type represents the information about a VNFC instance that is part of a VNF instance. + * NOTE: This allows to represent the error condition that a VNFC instance has lost its resources. type: object required: - id @@ -853,9 +929,7 @@ definitions: vnfcResourceInfoId: description: > Identifier of the VnfcResourceInfo instance representing - the virtualised resources used by this VNFC instance. - Shall be present in case a corresponding VnfcResourceInfo instance exists. - This allows to represent the error condition that a VNFC instance has lost its resources. + the virtualised resources used by this VNFC instance. See note. $ref: "SOL002SOL003_def.yaml#/definitions/IdentifierInVnf" vnfcState: description: > @@ -877,40 +951,42 @@ definitions: VNFC instance. Configurable properties referred in this attribute are declared in the VNFD. - This attribute can be modified with the PATCH method + This attribute can be modified with the PATCH method. + In addition, the provisions in clause 5.7 shall apply. $ref: "SOL002SOL003_def.yaml#/definitions/KeyValuePairs" ModificationsTriggeredByVnfPkgChange: description: > - This type represents attribute modifications that were performed on an "Individual VNF instance" resource when - changing the current VNF package. The attributes that can be included consist of those requested to be modified - explicitly in the "ChangeCurrentVnfPkgRequest" data structure, and additional attributes of the "VnfInstance" - data structure that were modified implicitly during the operation. + This type represents attribute modifications that were performed on an "Individual VNF instance" resource + when changing the current VNF package. The attributes that can be included consist of those requested to + be modified explicitly in the "ChangeCurrentVnfPkgRequest" data structure, and additional attributes of the + "VnfInstance" data structure that were modified implicitly during the operation. + The "ModificationsTriggeredByVnfPkgChange" data type shall comply with the provisions defined in table 5.5.3.21-1. + + NOTE 1: This attribute represents the delta (semantics as per IETF RFC 7396, 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. + NOTE 2: If present, this attribute (which depends on the value of the "vnfdId" attribute) was modified implicitly + during the related operation and contains a copy of the value of the related attribute from the VNFD in the + VNF Package identified by the "vnfdId" attribute. type: object properties: vnfConfigurableProperties: description: > - This attribute signals the modifications of the "vnfConfigurableProperties" attribute in "VnfInstance" performed - by the operation and shall be present if that attribute was modified during the operation. - This attribute represents the delta (semantics as per IETF RFC 7386, 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. + This attribute signals the modifications of the "vnfConfigurableProperties" attribute in "VnfInstance" performed + by the operation and shall be present if that attribute was modified during the operation. See note 1. + In addition, the provisions in clause 5.7 shall apply. $ref: "SOL002SOL003_def.yaml#/definitions/KeyValuePairs" metadata: description: > - This attribute signals the modifications of the "metadata" attribute in "VnfInstance" performed by the operation - and shall be present if that attribute was modified during the operation. - This attribute represents the delta (semantics as per IETF RFC 7386, 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. + This attribute signals the modifications of the "metadata" attribute in "VnfInstance" performed by the operation and + shall be present if that attribute was modified during the operation. See note 1. $ref: "SOL002SOL003_def.yaml#/definitions/KeyValuePairs" extensions: description: > - This attribute signals the modifications of the "extensions" attribute in "VnfInstance" performed by the operation and - shall be present if that attribute was modified during the operation. - This attribute represents the delta (semantics as per IETF RFC 7386, 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. + This attribute signals the modifications of the "extensions" attribute in "VnfInstance" performed by the operation and + shall be present if that attribute was modified during the operation. See note 1. + In addition, the provisions in clause 5.7 shall apply. $ref: "SOL002SOL003_def.yaml#/definitions/KeyValuePairs" vnfdId: description: > @@ -918,31 +994,19 @@ definitions: $ref: "SOL002SOL003_def.yaml#/definitions/Identifier" vnfProvider: description: > - If present, this attribute signals the new value of the "vnfProvider" attribute in "VnfInstance". If present, - this attribute (which depends on the value of the "vnfdId" attribute) was modified implicitly during the related - operation, and contains a copy of the value of he related attribute from the VNFD in the VNF Package identified - by the "vnfdId" attribute. + If present, this attribute signals the new value of the "vnfProvider" attribute in "VnfInstance". See note 2. type: string vnfProductName: description: > - If present, this attribute signals the new value of the "vnfProductName" attribute in "VnfInstance". If present, - this attribute (which depends on the value of the "vnfdId" attribute) was modified implicitly during the related - operation, and contains a copy of the value of he related attribute from the VNFD in the VNF Package identified - by the "vnfdId" attribute. + If present, this attribute signals the new value of the "vnfProductName" attribute in "VnfInstance". See note 2. type: string vnfSoftwareVersion: description: > - If present, this attribute signals the new value of the "vnfSoftwareVersion" attribute in "VnfInstance". If present, - this attribute (which depends on the value of the "vnfdId" attribute) was modified implicitly during the related - operation, and contains a copy of the value of he related attribute from the VNFD in the VNF Package identified - by the "vnfdId" attribute. + If present, this attribute signals the new value of the "vnfSoftwareVersion" attribute in "VnfInstance". See note 2. $ref: "SOL002SOL003_def.yaml#/definitions/Version" vnfdVersion: description: > - If present, this attribute signals the new value of the "vnfdVersion" attribute in "VnfInstance". If present, - this attribute (which depends on the value of the "vnfdId" attribute) was modified implicitly during the related - operation, by copying the value of this attribute from the VNFD in the VNF Package identified by the "vnfdId" - attribute. + If present, this attribute signals the new value of the "vnfdVersion" attribute in "VnfInstance". See note 2. $ref: "SOL002SOL003_def.yaml#/definitions/Version" LcmOpOccNotificationVerbosityType: @@ -955,4 +1019,93 @@ definitions: type: string enum: - FULL - - SHORT \ No newline at end of file + - SHORT + + + AffectedVipCp: + description: > + This type provides information about added, deleted and modified virtual IP CP instances. + type: object + required: + - cpInstanceId + - cpdId + - changeType + properties: + cpInstanceId: + description: > + Identifier of the virtual IP CP instance and the related "VipCpInfo" structure in "VnfInstance". + $ref: "SOL002SOL003_def.yaml#/definitions/IdentifierInVnf" + + cpdId: + description: > + Identifier of the VipCpd in the VNFD. + $ref: "SOL002SOL003_def.yaml#/definitions/IdentifierInVnfd" + + vnfdId: + description: > + Reference to the VNFD. + Shall be present in case of a "change current VNF Package" to + identify whether the affected virtual CP instance is associated + to a VipCpd which is referred from the source or destination VNFD. + $ref: "SOL002SOL003_def.yaml#/definitions/Identifier" + + changeType: + description: > + Signals the type of change. + Permitted values: + - ADDED + - REMOVED + - MODIFIED + type: string + enum: + - ADDED + - REMOVED + - MODIFIED + + VipCpInfo: + description: > + This type provides information related to virtual IP (VIP) CP. It shall comply with the provisions defined in table 5.5.3.28-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: "SOL002SOL003_def.yaml#/definitions/IdentifierInVnf" + cpdId: + description: > + Identifier of the VIP Connection Point Descriptor, VipCpd, in the VNFD. + $ref: "SOL002SOL003_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: "SOL002SOL003_def.yaml#/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: "SOL002SOL003_def.yaml#/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: "SOL002SOL003_def.yaml#/definitions/IdentifierInVnf" + metadata: + description: > + Metadata about this VIP CP. + type: array + items: + $ref: "SOL002SOL003_def.yaml#/definitions/KeyValuePairs" \ No newline at end of file diff --git a/src/definitions/SOL002SOL003VNFPerformanceManagement_def.yaml b/src/definitions/SOL002SOL003VNFPerformanceManagement_def.yaml index 52e47ec29572cadcb4ac5f9748aaafe96e80bd80..5a94574de082366a204eea817647dd66f19480b0 100644 --- a/src/definitions/SOL002SOL003VNFPerformanceManagement_def.yaml +++ b/src/definitions/SOL002SOL003VNFPerformanceManagement_def.yaml @@ -202,9 +202,17 @@ definitions: PerformanceReport: description: > - This type defines the format of a performance report provided by the VNFM to the EM as a result - of collecting performance information as part of a PM job. - The type shall comply with the provisions defined in table 6.5.2.10-1. + This type defines the format of a performance report provided by the VNFM to the NFVO as a result of collecting + performance information as part of a PM job. The type shall comply with the provisions defined in table 6.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 @@ -235,18 +243,9 @@ definitions: $ref: "SOL002SOL003_def.yaml#/definitions/Identifier" subObjectInstanceId: description: > - Identifier of the sub-object instance of the measured object (i.e. 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.). + 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. See note. $ref: "SOL002SOL003_def.yaml#/definitions/IdentifierInVnf" performanceMetric: description: > @@ -384,8 +383,9 @@ definitions: PmJobModifications: description: > - This type represents modifications to a PM job. - It shall comply with the provisions defined in table 6.5.2.12-1. + This type represents modifications to a PM job. It shall comply with the provisions defined in table 6.5.2.12-1. + + NOTE: At least one of the attributes defined in this type shall be present in request bodies. type: object oneOf: - required: @@ -395,22 +395,27 @@ definitions: properties: callbackUri: description: > - New value of the "callbackUri" attribute. - The value "null" is not permitted. See note. + New value of the "callbackUri" attribute. The value "null" is not permitted. See note. $ref: "SOL002SOL003_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. + 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. See note. $ref: "SOL002SOL003_def.yaml#/definitions/SubscriptionAuthentication" PmJobCriteria: description: > - Criteria of the collection of performance information. + This type represents collection criteria for PM jobs. It shall comply with the provisions defined in table 6.5.3.3-1. + + NOTE 1: 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. + 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. type: object required: - collectionPeriod @@ -437,15 +442,8 @@ definitions: type: string collectionPeriod: 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 - 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. + SSpecifies the periodicity at which the API producer will collect performance information. + The unit shall be seconds. See notes 1 and 2. type: integer minimum: 0 maximum: 1024 @@ -453,15 +451,8 @@ definitions: # Done using min and max params to set a range for positive int. reportingPeriod: description: > - 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. + Specifies the periodicity at which the API producer will report to the API consumer + about performance information. The unit shall be seconds. See notes 1 and 2. type: integer minimum: 0 maximum: 1024 @@ -541,8 +532,9 @@ definitions: ThresholdModifications: description: > - This type represents modifications to a threshold. - It shall comply with the provisions defined in table 6.5.2.11-1. + This type represents modifications to a threshold. It shall comply with the provisions defined in table 6.5.2.11-1. + + NOTE: At least one of the attributes defined in this type shall be present in request bodies. type: object oneOf: - required: @@ -552,22 +544,25 @@ definitions: properties: callbackUri: description: > - New value of the "callbackUri" attribute. - The value "null" is not permitted. See note. + New value of the "callbackUri" attribute. The value "null" is not permitted. See note. $ref: "SOL002SOL003_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. + 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. See note. $ref: "SOL002SOL003_def.yaml#/definitions/SubscriptionAuthentication" ThresholdCriteria: description: > - This type represents criteria that define a threshold. + This type represents criteria that define a threshold. It shall comply with the provisions defined in table 6.5.3.4-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). type: object required: - performanceMetric @@ -580,13 +575,11 @@ definitions: type: string thresholdType: description: > - Type of threshold. This attribute determines which other attributes - are present in the data structure. + Type of threshold. This attribute determines which other attributes are present in the data structure. + Permitted values: - * SIMPLE: Single-valued static threshold - In the present document, simple thresholds are defined. The - definition of additional threshold types is left for future - specification. + - SIMPLE: Single-valued static threshold. + See note 1. type: string enum: - SIMPLE @@ -609,18 +602,12 @@ definitions: format: float hysteresis: description: > - The hysteresis of the threshold. Shall be represented as a - non-negative floating point number. - A notification with crossing direction "UP" will be generated if - the measured value reaches or exceeds - "thresholdValue" + "hysteresis". A notification with crossing - direction "DOWN" will be generated if the measured value reaches - or undercuts "thresholdValue" - "hysteresis". - The hysteresis is defined to prevent storms of threshold - crossing notifications. When processing a request to create a - threshold, implementations should enforce a suitable minimum - value for this attribute (e.g. override the value or reject the - request). + The hysteresis of the threshold. + Shall be represented as a non-negative floating point number. + + A notification with crossing direction "UP" will be generated if the measured value reaches or exceeds + "thresholdValue" + "hysteresis". A notification with crossing direction "DOWN" will be generated if the + measured value reaches or undercuts "thresholdValue" - "hysteresis". See note 2. # TODO: This should be floating. # Done using Number type and floating format. type: number @@ -628,15 +615,18 @@ definitions: maximum: 1024 format: float - ThresholdCrossedNotification: description: > - This type represents a notification that is sent when a threshold has - been crossed. - The timing of sending this notification is determined by the capability - of the producing entity to evaluate the threshold crossing condition. - The notification shall be triggered by the VNFM when a threshold has - been crossed. + This type represents a notification that is sent when a threshold has been crossed. + It shall comply with the provisions defined in table 6.5.2.4-1. + + 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 VNFM 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 @@ -687,11 +677,10 @@ definitions: $ref: "SOL002SOL003_def.yaml#/definitions/Identifier" subObjectInstanceId: description: > - Identifier of the sub-object of the measured object (i.e. a VNFC instance) - to which the measurement applies. - Shall be present if this is required in an external measurement specification. - The sub-object allows to structure the measured object, but is not to be confused - with sub-counters which allow to structure the measurement. + Identifier of the sub-object of the measured object to which 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. + See note. $ref: "SOL002SOL003_def.yaml#/definitions/IdentifierInVnf" performanceMetric: description: > diff --git a/src/definitions/SOL002SOL003_def.yaml b/src/definitions/SOL002SOL003_def.yaml index d4249c5e1c300cc321b65049f996e75b2a691d4e..cecd0711202c91498522a10cd0655e49bd500a01 100644 --- a/src/definitions/SOL002SOL003_def.yaml +++ b/src/definitions/SOL002SOL003_def.yaml @@ -92,6 +92,12 @@ definitions: description: > This type represents subscription filter criteria to match VNF instances. + * NOTE 1: The attributes "vnfdIds" and "vnfProductsFromProviders" are alternatives to reference to VNF instances + that are based on certain VNFDs in a filter. They should not be used both in the same filter instance, + but one alternative should be chosen. + NOTE 2: The attributes "vnfInstanceIds" and "vnfInstanceNames" are alternatives to reference to particular VNF + instances in a filter. They should not be used both in the same filter instance, but one alternative + should be chosen. type: object anyOf: - oneOf: @@ -108,22 +114,14 @@ definitions: vnfdIds: description: > If present, match VNF instances that were created based on a VNFD - identified by one of the vnfdId values listed in this attribute. - The attributes "vnfdIds" and "vnfProductsFromProviders" are - alternatives to reference to VNF instances that are based on certain - VNFDs in a filter. They should not be used both in the same filter - instance, but one alternative should be chosen. + identified by one of the vnfdId values listed in this attribute. See note 1. type: array items: $ref: "#/definitions/Identifier" vnfProductsFromProviders: description: > If present, match VNF instances that belong to VNF products from - certain providers. - The attributes "vnfdIds" and "vnfProductsFromProviders" are - alternatives to reference to VNF instances that are based on certain - VNFDs in a filter. They should not be used both in the same filter - instance, but one alternative should be chosen. + certain providers. See note 1. type: array items: type: object @@ -175,22 +173,14 @@ definitions: vnfInstanceIds: description: > If present, match VNF instances with an instance identifier listed - in this attribute. - The attributes "vnfInstanceIds" and "vnfInstanceNames" are - alternatives to reference to particular VNF Instances in a filter. - They should not be used both in the same filter instance, but one - alternative should be chosen. + in this attribute. See note 2. type: array items: $ref: "#/definitions/Identifier" vnfInstanceNames: description: > If present, match VNF instances with a VNF Instance Name listed in - this attribute. - The attributes "vnfInstanceIds" and "vnfInstanceNames" are - alternatives to reference to particular VNF Instances in a filter. - They should not be used both in the same filter instance, but one - alternative should be chosen. + this attribute. See note 2. type: array items: type: string @@ -199,10 +189,17 @@ definitions: description: > This type represents parameters to connect to a VIM for managing the resources of a VNF instance. - This structure is used to convey VIM-related parameters over the Or-Vnfm - interface. Additional parameters for a VIM may be configured into the - VNFM by means outside the scope of the present document, and bound to - the identifier of that VIM. + * NOTE 1: If applicable, this attribute also provides information about the resourceGroupIds + that are accessible using a particular set of credentials. See definition of + "resourceGroupId" in clause 9.5.3.3. + * NOTE 2: Once the connectivity between VNFM and VIM is provided through a secure connection over + HTTP Secure (HTTP over SSL/TLS), and the connection might also be established through a VPN + (for example TLS-based VPN tunnelling) for site-to-site connection, the "accessInfo" JSON data + structure, and the sensitive data related information ("username"/"password" as required properties + for authentication purpose), will be transmitted as plain text through a TLS tunnel without additional + encoding/encryption before transmitting it, making the sensitive data visible to the endpoint. + The base64 encoded certificates are only used by the VNFM to verify the authenticity of the + interface endpoint of the VIM. type: object required: - vimType @@ -239,7 +236,7 @@ definitions: description: > Authentication credentials for accessing the VIM, and other access-related information such as tenants or infrastructure - resource groups (see note). The applicable keys are dependent on the + resource groups (see note 1). The applicable keys are dependent on the content of vimType. If the VimConnectionInfo structure is part of an HTTP response payload body, sensitive attributes that are children of this attributes @@ -249,19 +246,7 @@ definitions: as passwords) shall be present if they have not been provisioned out of band. - If applicable, this attribute also provides information about the - resourceGroupIds that are accessible using a particular set of credentials. - See definition of "resourceGroupId" in clause 9.5.3.3. - - Once the connectivity between VNFM and VIM is provided through a secure - connection over HTTP Secure (HTTP over SSL/TLS), and the connection might - also be established through a VPN (for example TLS-based VPN tunnelling) - for site-to-site connection, the "accessInfo" JSON data structure, - and the sensitive data related information ("username"/"password" as required - properties for authentication purpose), will be transmitted as plain text through - a TLS tunnel without additional encoding/encryption before transmitting it, - making the sensitive data visible to the endpoint. The base64 encoded certificates - are only used by the VNFM to verify the authenticity of the interface endpoint of the VIM. + See note 2. $ref: "#/definitions/KeyValuePairs" extra: description: > @@ -310,19 +295,28 @@ definitions: VnfExtCpData: description: > - This type represents configuration information for external CPs created - from a CPD. + This type represents configuration information for external CPs created. + * 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: 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. + * NOTE 3: 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. type: object required: - cpdId properties: 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. - - NOTE: 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. + The identifier of the CPD in the VNFD. See note 1. $ref: "#/definitions/IdentifierInVnfd" cpConfig: description: > @@ -330,16 +324,7 @@ definitions: created from the respective CPD. The key of the map which identifies the individual VnfExtCpConfig entries is managed by the API consumer. The entries shall be applied by the VNFM according to the rules of JSON Merge Patch (see IETF RFC 7396). - Within one VNF instance, all VNFC instances created from a particular VDU have the same external connectivity. - Thus, given a particular value of the “cpdId” attribute, there shall be one “cpConfig” entry for each VNFC - instance that has been or can be created from a VDU which includes a CPD identified by the “cpdId” attribute. - If the cpConfig represents a subport in a trunk, all “cpConfig” entries in this list shall have the same - segmentationId, which means they are connected to the same set of external VLs via the trunk. - The map entry value shall be set to "null" in order to delete a "VnfExtCpConfig" entry identified by a - particular key value from the map, i.e. for the disconnection of an existing external CP instance addressed - by cpInstanceId in the deleted map entry from a particular external virtual link, and deletion of that instance - in case it represents a subport. Deleting the last key from the map removes the affected instance of the - "VnfExtCpData" structure from its parent data structure. + See note 2 and note 3. type: object additionalProperties: $ref: "#/definitions/VnfExtCpConfig" @@ -352,6 +337,20 @@ 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: The following conditions apply to the attributes "linkPortId" and "cpProtocolData": + 1) Void. + 2) 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. + 3) If the "linkPortId" attribute is absent, the VNFM shall create a link port. + 4) 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. + 5) 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". anyOf: - required: - linkPortId @@ -369,46 +368,22 @@ definitions: 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": - 1) 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. - 2) If the "linkPortId" attribute is absent, the VNFM shall create a - link port. - 3) 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. - 4) 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". + will be associated. See note $ref: "#/definitions/Identifier" + + createExtLinkPort: + description: > + Indicates to the VNFM the need to create a dedicated link port for the external CP. + If set to True, the VNFM shall create a link port. + If set to False, the VNFM shall not create a link port. + This attribute is only applicable for external CP instances without a floating IP address that expose a VIP CP + instance for which a dedicated IP address is allocated. It shall be present in that case and shall be absent otherwise. + 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": - 1) Void - 2) 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. - 3) If the "linkPortId" attribute is absent, the VNFM shall create a - link port. - 4) 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. - 5) 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". + that connects the CP to a VL. See note. type: array items: $ref: "#/definitions/CpProtocolData" @@ -416,17 +391,16 @@ definitions: CpProtocolData: description: > This type represents network protocol data. + * 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 properties: layerProtocol: description: > - Identifier of layer(s) and protocol(s). - This attribute allows to signal the addition of further types of - layer and protocol in future versions of the present document in a - backwards-compatible way. In the current version of the present - document, only IP over Ethernet is supported. + Identifier of layer(s) and protocol(s). See note. type: string enum: - IP_OVER_ETHERNET @@ -440,6 +414,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: @@ -457,25 +441,31 @@ definitions: macAddress: description: > MAC address. If this attribute is not present, it shall be chosen by - the VIM. - At least one of "macAddress" or "ipAddresses" shall be present. + the VIM. 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: + - VLAN: the subport uses VLAN as encapsulation type. + - INHERIT: the subport gets its segmentation type from the network it’s connected to. + This attribute may be present for CP instances that represent subports in a trunk and shall be + absent otherwise. If this attribute is not present for a subport CP instance, default value VLAN shall be used. + 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 @@ -493,25 +483,21 @@ definitions: fixedAddresses: description: > Fixed addresses to assign (from the subnet defined by - "subnetId" if provided). - Exactly one of "fixedAddresses", "numDynamicAddresses" or - "ipAddressRange" shall be present. + "subnetId" if provided). See note 2. type: array items: $ref: "#/definitions/IpAddress" numDynamicAddresses: description: > Number of dynamic addresses to assign (from the subnet defined - by "subnetId" if provided). - Exactly one of "fixedAddresses", "numDynamicAddresses" or - "ipAddressRange" shall be present. + by "subnetId" if provided). See note 2. type: integer addressRange: description: > An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range - will be used. + will be used. See note 2. type: object required: - minAddress @@ -537,6 +523,14 @@ definitions: ExtVirtualLinkData: description: > 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 addresss 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 addresss. type: object required: - id @@ -569,7 +563,9 @@ definitions: $ref: "#/definitions/IdentifierInVim" extCps: description: > - External CPs of the VNF to be connected to this external VL. + External CPs of the VNF to be connected to this external VL. Entries in the list of external + CP data that are unchanged need not be supplied if the ExtVirtualLinkData structure is part + of a request or response that modifies the external connectivity. type: array items: $ref: "#/definitions/VnfExtCpData" @@ -577,7 +573,9 @@ definitions: description: > Externally provided link ports to be used to connect external connection points to this external VL. If this attribute is not - present, the VNFM shall create the link ports on the external VL. + present, the VNFM shall create the link ports on the 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" @@ -694,6 +692,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 @@ -709,6 +708,13 @@ definitions: Reference to the virtualised resource realizing this link port. $ref: "#/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/IdentifierInVim" + GrantedLcmOperationType: description: > The enumeration GrantedLcmOperationType defines the permitted values @@ -742,6 +748,12 @@ definitions: LcmOperationType: description: > + The enumeration LcmOpType defines the permitted values to represent + VNF lifecycle operation types in VNF lifecycle management operation + occurrence resources and VNF lifecycle management operation occurrence + notifications. + It shall comply with the provisions defined in table 5.5.4.5-1. + Value | Description ------|------------ INSTANTIATE | Represents the "Instantiate VNF" LCM operation. @@ -775,17 +787,17 @@ definitions: #SOL003 location: 4.3.5.3 description: > The definition of the general "ProblemDetails" data structure from - IETF RFC 7807 [19] is reproduced inthis structure. Compared to the - general framework defined in IETF RFC 7807 [19], the "status" and + IETF RFC 7807 is reproduced inthis structure. Compared to the + general framework defined in IETF RFC 7807, the "status" and "detail" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about - an error. IETF RFC 7807 [19] foresees extensibility of the + an error. IETF RFC 7807 foresees extensibility of the "ProblemDetails" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see - IETF RFC 7807 [19]. + IETF RFC 7807. type: object required: - status @@ -793,7 +805,7 @@ definitions: properties: type: description: > - A URI reference according to IETF RFC 3986 [5] that identifies the + A URI reference according to IETF RFC 3986 that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be @@ -831,6 +843,10 @@ definitions: #TODO: How to express "any additional attributes"? SubscriptionAuthentication: + description: > + * NOTE: The clientId and clientPassword passed in a subscription shall not be the same as the clientId and + clientPassword that are used to obtain authorization for API requests. Client credentials may differ between + subscriptions. The value of clientPassword should be generated by a random process type: object required: - authType @@ -887,26 +903,64 @@ definitions: description: > Client identifier to be used in the access token request of the OAuth 2.0 client credentials grant type. - Shall be present if it has not been provisioned out of band. - The clientId and clientPassword passed in a subscription shall - not be the same as the clientId and clientPassword that are used - to obtain authorization for API requests. Client credentials may - differ between subscriptions. The value of clientPassword should - be generated by a random process. + Shall be present if it has not been provisioned out of band. See note. type: string clientPassword: description: > Client password to be used in the access token request of the OAuth 2.0 client credentials grant type. - Shall be present if it has not been provisioned out of band. - The clientId and clientPassword passed in a subscription shall - not be the same as the clientId and clientPassword that are used - to obtain authorization for API requests. Client credentials may - differ between subscriptions. The value of clientPassword should - be generated by a random process. + Shall be present if it has not been provisioned out of band. See note. type: string tokenEndpoint: description: > The token endpoint from which the access token can be obtained. Shall be present if it has not been provisioned out of band. - $ref: "#/definitions/Uri" \ No newline at end of file + $ref: "#/definitions/Uri" + 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 VNFM as the follow-up to this coordination. + Value | Description + ------|------------ + 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 VNFM. + The related LCM operation shall be aborted by transitioning into the state "FAILED_TEMP". + type: string + enum: + - CONTINUE + - ABORT + - CANCELLED + + LcmOperationForCoordType: + description: > + The enumeration LcmOperationForCoordType defines the permitted values to + represent VNF lifecycle operation types in VNF LCM operation coordination actions. + * INSTANTIATE: Represents the "Instantiate VNF" LCM operation. + * SCALE: Represents the "Scale VNF" LCM operation. + * SCALE_TO_LEVEL: Represents the "Scale VNF to Level" LCM operation. + * CHANGE_FLAVOUR: Represents the "Change VNF Flavour" LCM operation. + * TERMINATE: Represents the "Terminate VNF" LCM operation. + * HEAL: Represents the "Heal VNF" LCM operation. + * OPERATE: Represents the "Operate VNF" LCM operation. + * CHANGE_EXT_CONN: Represents the "Change external VNF connectivity" LCM operation. + * MODIFY_INFO: Represents the "Modify VNF Information" LCM operation. + * CREATE_SNAPSHOT: Represents the "Create VNF Snapshot" LCM operation. + * REVERT_TO_SNAPSHOT: Represents the "Revert To VNF Snapshot" LCM operation. + * CHANGE_VNFPKG: Represents the "Change current VNF package" LCM operation. + type: string + enum: + - INSTANTIATE + - SCALE + - SCALE_TO_LEVEL + - CHANGE_FLAVOUR + - TERMINATE + - HEAL + - OPERATE + - CHANGE_EXT_CONN + - MODIFY_INFO + - CREATE_SNAPSHOT + - REVERT_TO_SNAPSHOT + - CHANGE_VNFPKG \ No newline at end of file diff --git a/src/endpoints/SOL002SOL003_endpoints.yaml b/src/endpoints/SOL002SOL003_endpoints.yaml index 977eb5a1a1d0539b4fa7add01eee3745dad16029..d6f7328cff25743ccf38b02a32464532df402a1f 100644 --- a/src/endpoints/SOL002SOL003_endpoints.yaml +++ b/src/endpoints/SOL002SOL003_endpoints.yaml @@ -5,14 +5,12 @@ endpoints: parameters: - $ref: ../components/SOL002SOL003_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 - supported. + The GET method reads API version information. This method shall follow the provisions specified in 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/SOL002SOL003_resp.yaml#/components/responses/400 "401": @@ -21,8 +19,6 @@ endpoints: $ref: ../responses/SOL002SOL003_resp.yaml#/components/responses/403 "404": $ref: ../responses/SOL002SOL003_resp.yaml#/components/responses/404 - "405": - $ref: ../responses/SOL002SOL003_resp.yaml#/components/responses/405 "406": $ref: ../responses/SOL002SOL003_resp.yaml#/components/responses/406 "413": @@ -41,16 +37,42 @@ endpoints: $ref: ../responses/SOL002SOL003_resp.yaml#/components/responses/503 "504": $ref: ../responses/SOL002SOL003_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/SOL002SOL003_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/SOL002SOL003_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/SOL002SOL003_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/SOL002SOL003_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 clause 7.1.6. headers: Content-Type: description: The MIME type of the body of the response.