SOL002 VNF Lifecycle Management - Implementation of deltas between v4.5.1 and v4.4.1

This merge request refers to the implementation of deltas between v4.5.1 and v4.4.1 of SOL002 VNF Lifecycle Management Interface.

Deadline for review: Wed 25th Sept 2024 @noon CEST

Merge request reports

Loading
+3 −3
Changes for SOL002/VNFLifecycleManagement-API/descriptors/SOL001/VNFD/vnfd_SOL001.yaml: 3 added lines, 3 removed lines.
Original line number Diff line number Diff line
tosca_definitions_version: tosca_simple_yaml_1_2
tosca_definitions_version: tosca_simple_yaml_1_3
description: "TST010 reference VNF-B"

imports:
  - https://forge.etsi.org/rep/nfv/SOL001/raw/v3.3.1/etsi_nfv_sol001_vnfd_types.yaml
  - https://forge.etsi.org/rep/nfv/SOL001/raw/v4.4.1/etsi_nfv_sol001_vnfd_types.yaml

metadata:
  descriptor_id: "VNF-B"
@@ -44,7 +44,7 @@ node_types:
        type: list
        entry_schema:
          type: string
        default: [ 'etsivnfm:v2.3.1' ]
        default: [ 'etsivnfm:v4.5.1' ]
    interfaces:
      Vnflcm:
        type: "tosca.interfaces.nfv.Vnflcm"
+20 −0
Changes for SOL002/VNFLifecycleManagement-API/environment/variables.txt: 20 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -13,7 +13,27 @@ ${ACCEPT_JSON} application/json
${apiRoot}        /
${apiName}        vnflcm
${apiMajorVersion}    v2
${API_VERSION}      2.12.0
${AUTH_USAGE}     1
${OAUTH_Encryption_ALGORITHM}   HS256
${NEG_SCOPE}    vnflcm:v2:invalid
${INSTANTIATE_SCOPE}    vnflcm:v2:instantiate
${SCALE_SCOPE}    vnfm:v2:scale
${SCALE_TO_LEVEL_SCOPE}   vnflcm:v2:scale_to_level
${CHANGE_FLAVOUR_SCOPE}   vnflcm:v2:change_flavour
${TERMINATE_SCOPE}   vnflcm:v2:terminate
${HEAL_SCOPE}   vnflcm:v2:heal:with_vnfc
${CHANGE_EXT_CONN_SCOPE}   vnflcm:v2:change_ext_conn
${OPERATE_SCOPE}    vnflcm:v2:operate:with_vnfc
${CREATE_SNAPSHOT_SCOPE}    vnflcm:v2:create_snapshot:with_vnfc
${REVERT_TO_SNAPSHOT_SCOPE}    vnflcm:v2:revert_to_snapshot:with_vnfc
${CHANGE_VNFPKG_SCOPE}    vnflcm:v2:change_vnfpkg 
${VNF_INSTANCE_INFO_SCOPE}   vnflcm:v2:vnf_instance_info:with_vnfc
${VNF_INSTANCE_INFO_READONLY_SCOPE}   vnflcm:v2:vnf_instance_info:with_vnfc:readonly
${OPERATION_OCCURANCE_SCOPE}    vnflcm:v2:op_occs
${OPERATION_OCCURANCE_READONLY_SCOPE}    vnflcm:v2:op_occs:readonly
${SUBSCRIPTIONS_SCOPE}   vnflcm:v2:subscriptions
${VNF_SNAPSHOT_INFO_SCOPE}    vnflcm:v2:vnf_snapshot_info


${HEADER_TEST_SUPPORTED}    0
+10 −0
Changes for SOL002/VNFLifecycleManagement-API/jsons/SelectVnfDeployableModulesRequest.json: 10 added lines, 0 removed lines.
Original line number Diff line number Diff line
{{
  "selectedDeployableModule": ["string"],
  "targetScaleLevelInfo": [
    {
      "aspectId": "string",
      "scaleLevel": 1
    }
  ],
  "additionalParams": {}
}}
+43 −0
Changes for SOL002/VNFLifecycleManagement-API/schemas/VnfLcmOperationOccurrenceNotification.schema.json: 43 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -614,6 +614,49 @@
			}
		  }
		}
	  },
	  "affectedCertificates": {
		"description": "Information about certificate content that were affected during the execution of the lifecycle management  operation, if this notification represents the result of a lifecycle management operation occurrence. Shall be present when using delegation mode, otherwise shall be absent. This attribute shall be supported when delegation mode in certificate management is applicable\n",
		"type": "array",
		"items": {
			"description": "This type provides input information about added, deleted, and modified certificate contents.\n",
			"type": "object",
			"required": [
				"certificateInfoId",
				"changeType"
			],
			"properties": {
				"certificateInfoId": {
					"description": "An identifier with the intention of being globally unique.\n",
					"type": "string"
				},
				"certificateBaseProfileId": {
					"description": "An identifier with the intention of being globally unique.\n",
					"type": "string"
				},
				"securityPolicyId": {
					"description": "An identifier with the intention of being globally unique.\n",
					"type": "string"
				},
				"cmfInfoId": {
					"description": "An identifier with the intention of being globally unique.\n",
					"type": "string"
				},
				"certificateContentId": {
					"description": "An identifier with the intention of being globally unique.\n",
					"type": "string"
				},
				"changeType": {
					"description": "Signals the type of change.",
					"type": "string",
					"enum": [
						"ADD",
						"REMOVE",
						"MODIFY"
					]
				}
			}
		}
	},
	  "changedExtConnectivity": {
		"description": "Information about changed external connectivity, if this notification represents the result of a lifecycle operation occurrence. Shall be present if the \"notificationStatus\" is set to \"RESULT\" and the \"operation\" has made any change of the external  connectivity of the VNF instance. Shall be absent otherwise.\n",
+369 −3
Changes for SOL002/VNFLifecycleManagement-API/schemas/vnfInstance.schema.json: 369 added lines, 3 removed lines.
Original line number Diff line number Diff line
{
  "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n          between the previous and the newly referred VNF package, i.e. when the new VNFD is\n          changed with respect to the previous VNFD in other aspects than merely referencing\n          to other VNF software images. In order to avoid misalignment of the VnfInstance with\n          the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n          that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tVNF configurable properties are sometimes also referred to as configuration parameters\n          applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n          if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n          and can be modified later, and others can be set only after instantiation.\n          The applicability of certain configuration may depend on the VNF and the required operation of\n          the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n          attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n          in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n          and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n          \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n          not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n          (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n          of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n          to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n          and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n          they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n",
  "description": "This type represents a VNF instance. * NOTE 1:\tModifying the value of this attribute shall not be performed when conflicts exist\n          between the previous and the newly referred VNF package, i.e. when the new VNFD is\n          changed with respect to the previous VNFD in other aspects than merely referencing\n          to other VNF software images. In order to avoid misalignment of the VnfInstance with\n          the current VNF's on-boarded VNF package, the values of attributes in the VnfInstance\n          that have corresponding attributes in the VNFD shall be kept in sync with the values in the VNFD.\n* NOTE 2:\tETSI GS NFV-SOL 001 specifies the structure and format of the VNFD based on TOSCA specifications. * NOTE 3:\tThese attributes are sometimes also referred to as configuration parameters\n          applicable to a VNF. Some of these are set prior to instantiation and cannot be modified\n          if the VNF is instantiated, some are set prior to instantiation (are part of initial configuration)\n          and can be modified later, and others can be set only after instantiation.\n          The applicability of certain configuration may depend on the VNF and the required operation of\n          the VNF at a certain point in time.\n* NOTE 4:\tUpon creation of the VnfInstance structure, the VNFM shall create and initialize all child\n          attributes of \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that were declared\n          in the VNFD with a defined initial value. The defined initial values can be declared in the VNFD,\n          and/or, in case of \"metadata\", obtained from the \"CreateVnfRequest\" structure. Child attributes of\n          \"vnfConfigurableProperties\", \"metadata\" and \"extensions\" that have no defined initial value shall\n          not be created, in order to be consistent with the semantics of the JSON Merge Patch method\n          (see IETF RFC 7396) that interprets null values as deletion request.\n* NOTE 5:\tIt is possible to have several ExtManagedVirtualLinkInfo for the same VNF internal VL in case\n          of a multi-site VNF spanning several VIMs. The set of ExtManagedVirtualLinkInfo corresponding\n          to the same VNF internal VL shall indicate so by referencing to the same VnfVirtualLinkDesc\n          and externally-managed multi-site VL instance (refer to clause 5.5.3.5).\n* NOTE 6:\tEven though externally-managed internal VLs are also used for VNF-internal connectivity,\n          they shall not be listed in the \"vnfVirtualLinkResourceInfo\" attribute as this would be redundant.\n* NOTE 7:\tSubports need not be used for containerized VNFCs. The application container can send and receive IP\n          packets with any VLAN tag as long as the network interface to connect to the secondary container cluster\n          network has been configured appropriately. Thus, no individual extCpInfo, except the one representing the\n          trunk, need be modelled to allow traffic tagged with a particular VLAN through the connection point.\n* NOTE 8:\tFor a scaling aspect whose related VNFCs have not been instantiated due to the selection of deployable \n          modules, the \"scaleStatus\" indicates the scale level that would be applicable to the aspect if a VNF LCM \n          operation changes the selected deployable modules and the related VNFCs are instantiated, unless the VNF \n          LCM operation explicitly indicates the scale level for the aspect.\n",
  "type": "object",
  "required": [
    "id",
@@ -48,6 +48,281 @@
      "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
      "type": "object"
    },
    "certificateInfo": {
      "description": "This type provides input information related to certificate and certificate management.\n",
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "description": "An identifier with the intention of being globally unique.\n",
          "type": "string"
        },
        "certificateConfigurationInfo": {
          "description": "This type provides input information related to certificate management.\n",
          "type": "object",
          "required": [
            "securityPolicy"
          ],
          "properties": {
            "certificateBaseProfile": {
              "description": "This type provides input information to override certificate base profile for certificate management\nNOTE : At least one overriding attributes shall be present, otherwise shall be absent.\n",
              "required": [
                "id"
              ],
              "properties": {
                "id": {
                  "description": "An identifier with the intention of being globally unique.\n",
                  "type": "string"
                },
                "issuer": {
                  "type": "string",
                  "description": "Issuer of certificates. See note."
                },
                "issuerUniqueIdentifier": {
                  "description": "An identifier with the intention of being globally unique.\n",
                  "type": "string"
                },
                "subject": {
                  "description": "This type provides input information related to subject of certificate.\n* NOTE: At least one overriding attributes shall be present, otherwise shall be absent.\n",
                  "type": "object",
                  "properties": {
                    "commonName": {
                      "description": "Information of certification target subject FQDN. See note.",
                      "type": "string"
                    },
                    "organization": {
                      "description": "Information of certification target subject Organization. See note.",
                      "type": "string"
                    },
                    "country": {
                      "description": "Information of certification target subject Country. See note.",
                      "type": "string"
                    },
                    "state": {
                      "description": "Information of certification target subject State. See note.",
                      "type": "string"
                    },
                    "locality": {
                      "description": "Information of certification target subject Locality. See note.",
                      "type": "string"
                    },
                    "emailAddress": {
                      "description": "Information of certification contact email address. See note.",
                      "type": "string"
                    }
                  }
                },
                "subjectUniqueIdentifier": {
                  "description": "An identifier with the intention of being globally unique.\n",
                  "type": "string"
                },
                "basicConstraints": {
                  "type": "string",
                  "description": "Basic constraints of certificates. See note.\n"
                },
                "issuerAltName": {
                  "description": "Alternative name of issuer of certificates in this NS. See note.",
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "subjectAltName": {
                  "description": "Alternative name of subject of certificates. Shall be present when this certificate is used for encrypted communication using IP address and subjectAltName attribute of CertificateBaseProfile in CertificateDesc of VNFD is empty (see ETSI GS NFV-IFA 011 [7],clause 7.1.19.4). See note",
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "nameConstraints": {
                  "description": "Name constraints of certificates. See note.",
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            },
            "securityPolicy": {
              "description": "Information for security policy to be satisfied for certificate.\n",
              "type": "array",
              "items": {
                "description": "This type provides input information related to security policy for certificate management.\n",
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "description": "An identifier with the intention of being globally unique.\n",
                    "type": "string"
                  },
                  "maxValidityPeriod": {
                    "description": "Allowed max validity period for certificates.",
                    "type": "integer"
                  },
                  "allowedAlgorithm": {
                    "description": "Allowed signature algorithm.",
                    "type": "string"
                  },
                  "minimumKeyLength": {
                    "description": "Minimum key length for certificates.",
                    "type": "integer"
                  }
                }
              }
            },
            "delegationSupportedCertificateManagements": {
              "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
              "type": "object"
            },
            "cmfInfo": {
              "description": "This type provides input information related to CMF for certificate management.\n",
              "type": "object",
              "required": [
                "id",
                "endPoint",
                "supportedProtocol"
              ],
              "properties": {
                "id": {
                  "description": "An identifier with the intention of being globally unique.\n",
                  "type": "string"
                },
                "endPoint": {
                  "description": "End point of CMF instance.",
                  "type": "object",
                  "required": [
                    "ipAddress",
                    "link"
                  ],
                  "properties": {
                    "ipAddress": {
                      "description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that consists of groups of zero to four hexadecimal digits, separated by colons.\n",
                      "type": "string",
                      "format": "IP"
                    },
                    "link": {
                      "description": "This type represents a link to a resource using an absolute URI.\n",
                      "type": "object",
                      "required": [
                        "href"
                      ],
                      "properties": {
                        "href": {
                          "description": "String formatted according to IETF RFC 3986.\n",
                          "type": "string"
                        }
                      }
                    }
                  }
                },
                "supportedProtocols": {
                  "description": "Supported protocol by CMF instance.",
                  "type": "array",
                  "items": {
                    "type": "string",
                    "enum": [
                      "CMP",
                      "CMPv2",
                      "EST",
                      "SCEP"
                    ]
                  }
                },
                "certificateChain": {
                  "description": "Certificate chain that this CMF provides.",
                  "type": "array",
                  "items": {
                    "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                    "type": "object"
                  }
                }
              }
            }
          }
        },
        "certificateContents": {
          "description": "Information for contents of issued certificates. The information contained in this attribute may be updated over time during the VNF LCM, e.g. certificate(s) renewal.\n",
          "type": "array",
          "items": {
            "description": "This type provides input information related to certificate content.\n",
            "type": "object",
            "required": [
              "id",
              "certificateDescId",
              "certificateType"
            ],
            "properties": {
              "id": {
                "description": "An identifier with the intention of being globally unique.\n",
                "type": "string"
              },
              "certficateDescId": {
                "description": "An identifier that is unique within a VNF descriptor.\n",
                "type": "string"
              },
              "certificateType": {
                "description": "Type of this certificate.",
                "type": "string",
                "enum": [
                  "VNFCI_CERT",
                  "VNFOAM_CERT"
                ]
              },
              "supportedCertificateManagements": {
                "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                "type": "object"
              },
              "version": {
                "description": "A version.\n",
                "type": "string"
              },
              "serialNumber": {
                "description": "Serial number of this certificate.",
                "type": "integer"
              },
              "signatureAlgorithm": {
                "description": "Algorithm of this certificate's signature.",
                "type": "string"
              },
              "issuer": {
                "description": "Issuer of this certificate.",
                "type": "string"
              },
              "notBefore": {
                "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
                "type": "string",
                "format": "date-time"
              },
              "notAfter": {
                "description": "Date-time stamp. Representation: String formatted according to IETF RFC 3339.\n",
                "type": "string",
                "format": "date-time"
              },
              "subject": {
                "description": "Subject of this certificate.",
                "type": "string"
              },
              "publicKeyAlgorithm": {
                "description": "Algorithm of this certificate's public key.",
                "type": "string"
              },
              "publicKey": {
                "description": "Public key of this certificate.",
                "type": "string"
              },
              "certificateExtensions": {
                "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                "type": "object"
              }
            }
          }
        }
      }
    },
    "instantiationState": {
      "description": "The instantiation state of the VNF.\n",
      "type": "string",
@@ -78,7 +353,7 @@
          ]
        },
        "scaleStatus": {
          "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect. This attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling.\n",
          "description": "Scale status of the VNF, one entry per aspect. Represents for every scaling aspect how \"big\" the VNF has been scaled w.r.t. that aspect. This attribute shall be present if the VNF supports scaling. See clause B.2 for an explanation of VNF scaling. For an aspect that has not been deployed because the related deployableModule has not been selected, it indicates the scale level that has been requested in the instantiation or in a scaling operation, or, if none has been requested in any of them, the scale level applicable to the aspect based on the default instantiation level. See note 8.\n",
          "type": "array",
          "items": {
            "description": "This type represents the scale level of a VNF instance related to a scaling aspect.\n",
@@ -129,6 +404,14 @@
            }
          }
        },
        "selectedDeployableModule": {
          "description": "References a currently selected deployable module, as defined in the VNFD, that has already completed the instantiation of its VNFCs\n",
          "type": "array",
          "items": {
            "description": "An identifier that is unique within a VNF descriptor.\n",
            "type": "string"
          }
        },
        "extCpInfo": {
          "description": "Information about the external CPs exposed by the VNF instance. When trunking is enabled, the list of entries includes both, external CPs corresponding to parent ports of a trunk, and external CPs associated to sub-ports of a trunk.\n",
          "type": "array",
@@ -350,6 +633,10 @@
                  "description": "An identifier with the intention of being globally unique.\n",
                  "type": "string"
                }
              },
              "certificateContentId": {
                "description": "An identifier with the intention of being globally unique.\n",
                "type": "string"
              }
            }
          }
@@ -1809,6 +2096,10 @@
                  "metadata": {
                    "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                    "type": "object"
                  },
                  "certificateContentId": {
                    "description": "An identifier with the intention of being globally unique.\n",
                    "type": "string"
                  }
                }
              }
@@ -1816,6 +2107,10 @@
            "metadata": {
              "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
              "type": "object"
            },
            "certificateContentId": {
              "description": "An identifier with the intention of being globally unique.\n",
              "type": "string"
            }
          }
        },
@@ -2138,7 +2433,8 @@
                "type": "string",
                "enum": [
                  "Deployment",
                  "StatefulSet"
                  "StatefulSet",
                  "DaemonSet"
                ]
              },
              "desiredInstances": {
@@ -2149,6 +2445,76 @@
                "description": "Number of available MCIO instances.\n",
                "type": "integer"
              },
              "additionalInfo": {
                "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                "type": "object"
              },
              "certificateContentId": {
                "description": "An identifier with the intention of being globally unique.\n",
                "type": "string"
              }
            }
          }
        },
        "vnfPaasServiceInfo": {
          "description": "Information on the PaaS Services assigned and used by the VNF instance.\n",
          "type": "array",
          "items": {
            "description": "This type provides information about a PaaS Service that is used by a VNF instance. The PaasServiceInfo is comprised of various sets of information. Some information comes from the VNFD, other information comes from the PaaS Service assets provided by the NFVO to the VNFM, and other information is provided at runtime information about the usage of the PaaS Service.\n",
            "type": "object",
            "required": [
              "id",
              "paasServiceId",
              "paasServiceType",
              "paasServiceRequestId",
              "paasServiceHandle"
            ],
            "properties": {
              "id": {
                "description": "An identifier with the intention of being globally unique.\n",
                "type": "string"
              },
              "paasServiceId": {
                "description": "An identifier with the intention of being globally unique.\n",
                "type": "string"
              },
              "paasServiceType": {
                "description": "The type of PaaS Service. The value of this attribute is expected to be matched against values of the registered PaaS Services in the PSR.\n",
                "type": "string"
              },
              "paasServiceVersion": {
                "description": "A version.\n",
                "type": "string"
              },
              "paasServiceRequestId": {
                "description": "An identifier that is unique within a VNF descriptor.\n",
                "type": "string"
              },
              "paasServiceHandle": {
                "description": "This type provides information enabling the access and use of the PaaS Service by the  VNF instance. The type and format of the handle depends on the form that the PaaS Service is formed.\n",
                "type": "object",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "description": "An identifier with the intention of being globally unique.\n",
                    "type": "string"
                  },
                  "interfaceInfo": {
                    "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                    "type": "object"
                  },
                  "accessInfo": {
                    "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                    "type": "object"
                  },
                  "extra": {
                    "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                    "type": "object"
                  }
                }
              },
              "additionalInfo": {
                "description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of keyvalue pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259. In the following example, a list of key-value pairs with four keys (\"aString\", \"aNumber\", \"anArray\" and \"anObject\") is provided to illustrate that the values associated with different keys can be of different type.\n",
                "type": "object"
Loading
Loading